X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_message.c;h=3d3822cfeeb8326e455e5aae29d8d1afa93e8b38;hp=ae7ca6e9706c16ac80e34c37fded29215329e956;hb=a4397be0e142429d2877b9e8db862f6f9aff2297;hpb=be9585b914061f84c5d5939673d29ecc048ab1d7 diff --git a/php_http_message.c b/php_http_message.c index ae7ca6e..3d3822c 100644 --- a/php_http_message.c +++ b/php_http_message.c @@ -275,6 +275,8 @@ void php_http_message_update_headers(php_http_message_t *msg) if (php_http_message_body_stream(msg->body)->readfilters.head) { /* if a read stream filter is attached to the body the caller must also care for the headers */ + } else if (php_http_message_header(msg, ZEND_STRL("Content-Range"))) { + /* don't mess around with a Content-Range message */ } else if ((size = php_http_message_body_size(msg->body))) { ZVAL_LONG(&h, size); zend_hash_str_update(&msg->hdrs, "Content-Length", lenof("Content-Length"), &h); @@ -299,6 +301,7 @@ void php_http_message_update_headers(php_http_message_t *msg) } } else if ((cl = php_http_message_header_string(msg, ZEND_STRL("Content-Length")))) { if (!zend_string_equals_literal(cl, "0")) { + /* body->size == 0, so get rid of old Content-Length */ zend_hash_str_del(&msg->hdrs, ZEND_STRL("Content-Length")); } zend_string_release(cl); @@ -1106,7 +1109,7 @@ static PHP_METHOD(HttpMessage, getHeader) if ((header = php_http_message_header(obj->message, header_str, header_len))) { if (!header_ce) { - RETURN_ZVAL(header, 1, 1); + RETURN_ZVAL_FAST(header); } else if (instanceof_function(header_ce, php_http_header_class_entry)) { php_http_object_method_t cb; zval argv[2];