X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_encoding_api.c;h=28f6a9d0daf3d82003baf9997cca67bad159bf51;hb=b3dd66ed1452139236b7101f7d73f19917bd1ea2;hp=89865a2bd543c437e4de80b24f1e3f29c17046bf;hpb=650dad8564d53bd3fb6c9867fa81e0abf17f6f7b;p=m6w6%2Fext-http diff --git a/http_encoding_api.c b/http_encoding_api.c index 89865a2..28f6a9d 100644 --- a/http_encoding_api.c +++ b/http_encoding_api.c @@ -327,12 +327,10 @@ retry_raw_inflate: Z.next_in = (Bytef *) data; Z.avail_in = data_len; - switch (status = http_inflate_rounds(&Z, Z_NO_FLUSH, decoded, decoded_len)) - { + switch (status = http_inflate_rounds(&Z, Z_NO_FLUSH, decoded, decoded_len)) { case Z_OK: case Z_STREAM_END: return SUCCESS; - break; case Z_DATA_ERROR: /* raw deflated data? */ @@ -341,7 +339,6 @@ retry_raw_inflate: wbits = HTTP_WINDOW_BITS_RAW; goto retry_raw_inflate; } - break; } inflateEnd(&Z); } @@ -432,8 +429,7 @@ PHP_HTTP_API STATUS _http_encoding_deflate_stream_update(http_encoding_stream *s s->stream.avail_out = *encoded_len; s->stream.next_out = (Bytef *) *encoded; - switch (status = deflate(&s->stream, HTTP_ENCODING_STREAM_FLUSH_FLAG(s->flags))) - { + switch (status = deflate(&s->stream, HTTP_ENCODING_STREAM_FLUSH_FLAG(s->flags))) { case Z_OK: case Z_STREAM_END: /* cut processed chunk off the buffer */ @@ -448,7 +444,6 @@ PHP_HTTP_API STATUS _http_encoding_deflate_stream_update(http_encoding_stream *s *encoded = erealloc_rel(*encoded, *encoded_len + 1); (*encoded)[*encoded_len] = '\0'; return SUCCESS; - break; } STR_SET(*encoded, NULL); @@ -470,8 +465,7 @@ retry_raw_inflate: s->stream.next_in = (Bytef *) PHPSTR_VAL(s->stream.opaque); s->stream.avail_in = PHPSTR_LEN(s->stream.opaque); - switch (status = http_inflate_rounds(&s->stream, HTTP_ENCODING_STREAM_FLUSH_FLAG(s->flags), decoded, decoded_len)) - { + switch (status = http_inflate_rounds(&s->stream, HTTP_ENCODING_STREAM_FLUSH_FLAG(s->flags), decoded, decoded_len)) { case Z_OK: case Z_STREAM_END: /* cut off */ @@ -481,7 +475,6 @@ retry_raw_inflate: phpstr_reset(PHPSTR(s->stream.opaque)); } return SUCCESS; - break; case Z_DATA_ERROR: /* raw deflated data ? */ @@ -491,7 +484,6 @@ retry_raw_inflate: inflateInit2(&s->stream, HTTP_WINDOW_BITS_RAW); goto retry_raw_inflate; } - break; } http_error_ex(HE_WARNING, HTTP_E_ENCODING, "Failed to update inflate stream: %s", zError(status)); @@ -512,15 +504,13 @@ PHP_HTTP_API STATUS _http_encoding_deflate_stream_flush(http_encoding_stream *s, s->stream.avail_out = *encoded_len; s->stream.next_out = (Bytef *) *encoded; - switch (status = deflate(&s->stream, Z_FULL_FLUSH)) - { + switch (status = deflate(&s->stream, Z_FULL_FLUSH)) { case Z_OK: case Z_STREAM_END: *encoded_len = HTTP_DEFLATE_BUFFER_SIZE - s->stream.avail_out; *encoded = erealloc_rel(*encoded, *encoded_len + 1); (*encoded)[*encoded_len] = '\0'; return SUCCESS; - break; } STR_SET(*encoded, NULL); @@ -581,6 +571,12 @@ PHP_HTTP_API STATUS _http_encoding_inflate_stream_finish(http_encoding_stream *s { int status; + if (!PHPSTR_LEN(s->stream.opaque)) { + *decoded = NULL; + *decoded_len = 0; + return SUCCESS; + } + *decoded_len = (PHPSTR_LEN(s->stream.opaque) + 1) * HTTP_INFLATE_ROUNDS; *decoded = emalloc_rel(*decoded_len); @@ -675,19 +671,17 @@ void _http_ob_deflatehandler(char *output, uint output_len, char **handled_outpu HTTP_G->send.deflate.encoding = !0; - switch (http_encoding_response_start(0)) - { + switch (http_encoding_response_start(0)) { case HTTP_ENCODING_GZIP: flags = HTTP_DEFLATE_TYPE_GZIP; - break; + break; case HTTP_ENCODING_DEFLATE: flags = HTTP_DEFLATE_TYPE_ZLIB; - break; + break; default: goto deflate_passthru_plain; - break; } flags |= (HTTP_G->send.deflate.start_flags &~ 0xf0);