You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bugs@httpd.apache.org by bu...@apache.org on 2003/08/04 12:57:47 UTC

DO NOT REPLY [Bug 22104] New: - mod_deflate does not change Content-Length, breaks DAV file upload via PUT

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22104>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22104

mod_deflate does not change Content-Length, breaks DAV file upload via PUT

           Summary: mod_deflate does not change Content-Length, breaks DAV
                    file upload via PUT
           Product: Apache httpd-2.0
           Version: 2.0.47
          Platform: All
        OS/Version: Other
            Status: NEW
          Severity: Enhancement
          Priority: Other
         Component: mod_deflate
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: tim@robbins.dropbear.id.au


Although it is well documented that mod_deflate does not modify the Content-
Length header when decoding a gzip-compressed message body, the incorrect value 
seems to confuse mod_dav -- when I try to upload a compressed message body with 
the PUT method, mod_dav returns a 400 Bad Request error, and this message 
appears in the log:

[Mon Aug 04 19:49:25 2003] [error] [client 192.168.0.144] An error occurred 
while reading the request body.  [400, #0]

To test, I'm PUT'ing the output of "echo test | gzip -9c". What happens is that 
dav_method_put()'s first call to ap_get_client_block() returns 5 (strlen
("test\n")), but then it calls ap_get_client_block() again, and it returns -1 
to signal an error. I believe this is because it's expecting more data.

I'm not sure how to solve this problem. It's probably not a great idea to 
buffer the whole body in memory then fix up the Content-Length header after 
decompressing it all, so perhaps mod_deflate could fake up a "chunked"-encoded 
body, putting each block of data returned from zlib into a new chunk, and 
signalling EOF with a 0-length chunk. I'm not familiar with the internals of 
the Apache httpd, so I'm not sure.

I'm filing this as "Enhancement" because although the problem is documented, it 
would be really nice to be able to use PUT requests w/ gzip-compressed bodies.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org