masterzen / nginx-upload-progress-module

Nginx module implementing an upload progress system, that monitors RFC1867 POST uploads as they are transmitted to upstream servers.

Home Page:http://wiki.codemongers.com/NginxHttpUploadProgressModule

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Using the same x-progress-id: error or warning ?

erlo opened this issue · comments

commented

Hello,

I'm trying to integrate the upload-progress-module (with upload-module) in your system. In case the client initiate a POST using the same x-progress-id, the module always return a "NGX_HTTP_INTERNAL_SERVER_ERROR".

Is it possible, without changing the code, the bypass the error ?

If there was a problem on the client side (same x-progress-id used twice...) I would like to process the upload without error, even if the progression will not be available ?

What is the best way to do it ? If people upload large data in your case it should be a bad idea at the end to display an error just because of the x-progress-id...

I'm sorry, but as seen from the server you can't ask for 2 uploads to have the same X-Progress-ID at the exact same time, hence I prefer to return an error (even though the upload would succeed).

You probably can generate X-Progress-ID that have a very low probability of collision (ie a MD5 or SHA sum of some random information).

You can modify the upload-progress module to return NGX_DECLINED instead of NGX_HTTP_INTERNAL_SERVER_ERROR when duplicate X-Progress-ID are found, that will accomplish what you want.
But I don't think it should be part of the "official" distribution. I might accept a patch providing an option that would change this behavior (as long as the default is to error), though.

commented

First, thank you for your answer.

Actually we have noticed that browser can do nasty things, such as
automatically replay the post action immediatly after a network
failure (for example), in this case, I want to consider the last post
as "correct" action...

I'm going to play with the NGX_DECLINED instead of
NGX_HTTP_INTERNAL_SERVER_ERROR...

If I consider my code a quite "smart", I will suggest you the patch :)

Thanks!

Erwan

2012/5/11 Brice Figureau
reply@reply.github.com:

I'm sorry, but as seen from the server you can't ask for 2 uploads to have the same X-Progress-ID at the exact same time, hence I prefer to return an error (even though the upload would succeed).

You probably can generate X-Progress-ID that have a very low probability of collision (ie a MD5 or SHA sum of some random information).

You can modify the upload-progress module to return NGX_DECLINED instead of NGX_HTTP_INTERNAL_SERVER_ERROR when duplicate X-Progress-ID are found, that will accomplish what you want.
But I don't think it should be part of the "official" distribution. I might accept a patch providing an option that would change this behavior (as long as the default is to error), though.


Reply to this email directly or view it on GitHub:
#24 (comment)

commented

Hello,

Here is a small patch to give the possibility to ignore a tracking id already register.
It enable a new configuration setting flag "upload_progress_noerror_if_exist".

If set to "on", don't raise error when the same tracking id is found
If set to "off", default behavior, raise an INTERNAL_SERVER_ERROR.

Default value is "off".

I will be happy if you enable this feature in future release :)

I'm not familiar with gitub, there is probably a better way to transmit a patch, but here is a gist of the patch...

https://gist.github.com/2694514

Regards.