Gunzip: proper error handling on gunzipping an empty response.

With previous code, an empty (malformed) response resulted in a request
finalized without sending anything to a client.
This commit is contained in:
Maxim Dounin 2013-10-31 04:16:20 +04:00
parent eea2e1262b
commit 45075adccf

View File

@ -500,9 +500,13 @@ ngx_http_gunzip_filter_inflate(ngx_http_request_t *r,
return NGX_OK;
}
if (rc == Z_STREAM_END && ctx->flush == Z_FINISH
&& ctx->zstream.avail_in == 0)
{
if (ctx->flush == Z_FINISH && ctx->zstream.avail_in == 0) {
if (rc != Z_STREAM_END) {
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
"inflate() returned %d on response end", rc);
return NGX_ERROR;
}
if (ngx_http_gunzip_filter_inflate_end(r, ctx) != NGX_OK) {
return NGX_ERROR;