Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
erlo opened this issue May 11, 2012 · 3 comments
Open

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

erlo opened this issue May 11, 2012 · 3 comments

Comments

@erlo
Copy link

erlo commented May 11, 2012

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...

@masterzen
Copy link
Owner

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.

@erlo
Copy link
Author

erlo commented May 11, 2012

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)

@erlo
Copy link
Author

erlo commented May 14, 2012

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants