prepare 2.5.1
[m6w6/ext-http] / php_http_env_response.c
index 67a6d5830e4bf4d07b63b7db7b5b1df4b108050c..20a31eb90fea41b0ad73aa22c9e8011867dc1c95 100644 (file)
@@ -228,9 +228,10 @@ php_http_cache_status_t php_http_env_is_response_cached_by_last_modified(zval *o
 
 static zend_bool php_http_env_response_is_cacheable(php_http_env_response_t *r, php_http_message_t *request)
 {
+       long status = r->ops->get_status(r);
        TSRMLS_FETCH_FROM_CTX(r->ts);
 
-       if (r->ops->get_status(r) >= 400) {
+       if (status && status / 100 != 2) {
                return 0;
        }
 
@@ -1212,9 +1213,14 @@ static PHP_METHOD(HttpEnvResponse, __invoke)
 
                PHP_HTTP_ENV_RESPONSE_OBJECT_INIT(obj);
 
-               php_http_message_object_init_body_object(obj);
+               if (!obj->body) {
+                       php_http_message_object_init_body_object(obj);
+               }
                php_http_message_body_append(obj->message->body, ob_str, ob_len);
 #if PHP_VERSION_ID >= 50400
+               if (ob_flags & PHP_OUTPUT_HANDLER_CLEAN) {
+                       php_stream_truncate_set_size(php_http_message_body_stream(obj->message->body), 0);
+               }
                RETURN_TRUE;
 #else
                RETURN_EMPTY_STRING();