I have a problem with mod_deflate's inflate filter (the one I wrote a couple of months ago). I've found a site that (repeatably) provides compressed data that causes zlib to return -3 (data error). I hope I can solve it by more detailed study of zlib, but it raises a broader issue.
The inflate-filter is error-handling in what seems an appropriate manner - aborting the decompress and returning APR_EGENERAL. But that then propagates NOBODY_WROTE, and the client is getting unexpected end of connection, which is not good. The cop-out of a remove_output_filter and a pass_brigade is no use here, as the error could be mid-stream, and the Content-Encoding header has already been stripped in any case. Instinctively I'd like to see the Client get a 500 errordoc in such cases. But that's not an option mid-stream either. OTOH, if it happens before core_output_filter has got any data, is there any cleanup core can do about this to improve the client experience? Any thoughts? Has this been discussed before? -- Nick Kew
