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

Wrong fix

doublex opened this issue · comments

Hello,

The commit "aa4e8b93558274a45387d215740a6bd4654148f4" has a bug.
If I upload a file, the code enters the first "if()", but not the second "if()", so
"up->rest" is zero, but "up->length" is not.
Therefore the module reports in the beginning 100% uploaded because
up->rest == 0.

Thanks a lot!

    /* Properly handles small files where no read events happen after the */
    /* request is first handled (apparently this can happen on linux with epoll) */
    if (r->headers_in.content_length_n) {
        up->length = r->headers_in.content_length_n;
        if (r->request_body) {
            up->rest = r->request_body->rest;
        }
    }

I met the same problem.
and i fixed it as follows. it tested ok.

if (r->headers_in.content_length_n) {
    up->length = r->headers_in.content_length_n;
     if (r->request_body) {
         up->rest = r->request_body->rest;
     } else {
         up->rest = up->length;
     }
 }

@ChenyuanHu or @doublex, would you open a Pull Request with the fix so that I can merge it ASAP?