X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_message_api.c;h=be4d0c33d2740b4b6f2a11fe481d9b05ed07f25a;hp=36b3098737ce0e672137d881b8214bc74d1bd115;hb=9748cdee0eef4cf592a55934b8888f6cb05516ae;hpb=bb1f32fd5d06b9b9ace6517c177b0fe58c9ff57c diff --git a/http_message_api.c b/http_message_api.c index 36b3098..be4d0c3 100644 --- a/http_message_api.c +++ b/http_message_api.c @@ -151,26 +151,24 @@ PHP_HTTP_API http_message *_http_message_parse_ex(http_message *msg, const char const char *continue_at = NULL; /* message has chunked transfer encoding */ - if (c = http_message_header(msg, "Transfer-Encoding")) { - if (!strcasecmp("chunked", Z_STRVAL_P(c))) { - char *decoded; - size_t decoded_len; - - /* decode and replace Transfer-Encoding with Content-Length header */ - if (continue_at = http_chunked_decode(body, message + message_length - body, &decoded, &decoded_len)) { - phpstr_from_string_ex(PHPSTR(msg), decoded, decoded_len); - efree(decoded); - { - zval *len; - char *tmp; - - spprintf(&tmp, 0, "%lu", (ulong) decoded_len); - MAKE_STD_ZVAL(len); - ZVAL_STRING(len, tmp, 0); - - zend_hash_del(&msg->hdrs, "Transfer-Encoding", sizeof("Transfer-Encoding")); - zend_hash_add(&msg->hdrs, "Content-Length", sizeof("Content-Length"), (void *) &len, sizeof(zval *), NULL); - } + if ((c = http_message_header(msg, "Transfer-Encoding")) && (!strcasecmp("chunked", Z_STRVAL_P(c)))) { + char *decoded; + size_t decoded_len; + + /* decode and replace Transfer-Encoding with Content-Length header */ + if (continue_at = http_chunked_decode(body, message + message_length - body, &decoded, &decoded_len)) { + phpstr_from_string_ex(PHPSTR(msg), decoded, decoded_len); + efree(decoded); + { + zval *len; + char *tmp; + + spprintf(&tmp, 0, "%lu", (ulong) decoded_len); + MAKE_STD_ZVAL(len); + ZVAL_STRING(len, tmp, 0); + + zend_hash_del(&msg->hdrs, "Transfer-Encoding", sizeof("Transfer-Encoding")); + zend_hash_add(&msg->hdrs, "Content-Length", sizeof("Content-Length"), (void *) &len, sizeof(zval *), NULL); } } } else