X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_encoding_api.c;h=9159106a81bb3e7235c4a5dacf54fbbf0dbd23db;hp=7a6b04311e71cb1c602cd0d02c42f1422d9b1138;hb=758075cfcd90fe3e9b3db6feb0f675d35cb664a2;hpb=aca5a5a21e4514707a71cfa69cc19ae50a78f5d3 diff --git a/http_encoding_api.c b/http_encoding_api.c index 7a6b043..9159106 100644 --- a/http_encoding_api.c +++ b/http_encoding_api.c @@ -327,10 +327,13 @@ retry_raw_inflate: Z.avail_in = data_len; switch (status = http_inflate_rounds(&Z, Z_NO_FLUSH, decoded, decoded_len)) { - case Z_OK: case Z_STREAM_END: inflateEnd(&Z); return SUCCESS; + + case Z_OK: + status = Z_DATA_ERROR; + break; case Z_DATA_ERROR: /* raw deflated data? */ @@ -694,7 +697,10 @@ void _http_ob_deflatehandler(char *output, uint output_len, char **handled_outpu if (HTTP_G->send.deflate.stream) { if (output_len) { - http_encoding_deflate_stream_update((http_encoding_stream *) HTTP_G->send.deflate.stream, output, output_len, handled_output, handled_output_len); + size_t tmp_len; + + http_encoding_deflate_stream_update((http_encoding_stream *) HTTP_G->send.deflate.stream, output, output_len, handled_output, &tmp_len); + *handled_output_len = tmp_len; } if (mode & PHP_OUTPUT_HANDLER_END) { @@ -733,7 +739,10 @@ void _http_ob_inflatehandler(char *output, uint output_len, char **handled_outpu if (HTTP_G->send.inflate.stream) { if (output_len) { - http_encoding_inflate_stream_update((http_encoding_stream *) HTTP_G->send.inflate.stream, output, output_len, handled_output, handled_output_len); + size_t tmp_len; + + http_encoding_inflate_stream_update((http_encoding_stream *) HTTP_G->send.inflate.stream, output, output_len, handled_output, &tmp_len); + *handled_output_len = tmp_len; } if (mode & PHP_OUTPUT_HANDLER_END) {