X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=php_http_env_response.c;h=9f01814cb703a0dc6e86d8f0a468fe4b42b76975;hb=1571b39b2988b27c93cfa2cd9114439784bff2d6;hp=5b4682084278d460c6672caafa745177fd289c9a;hpb=95c6c900d04096d332c422e3f597186b7184c5ab;p=m6w6%2Fext-http diff --git a/php_http_env_response.c b/php_http_env_response.c index 5b46820..9f01814 100644 --- a/php_http_env_response.c +++ b/php_http_env_response.c @@ -207,7 +207,9 @@ 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) { - if (r->ops->get_status(r) >= 400) { + long status = r->ops->get_status(r); + + if (status && status / 100 != 2) { return 0; } @@ -1157,7 +1159,12 @@ static PHP_METHOD(HttpEnvResponse, __invoke) PHP_HTTP_ENV_RESPONSE_OBJECT_INIT(obj); php_http_message_object_init_body_object(obj); - php_http_message_body_append(obj->message->body, ob_str, ob_len); + + if (ob_flags & PHP_OUTPUT_HANDLER_CLEAN) { + php_stream_truncate_set_size(php_http_message_body_stream(obj->message->body), 0); + } else { + php_http_message_body_append(obj->message->body, ob_str, ob_len); + } RETURN_TRUE; } } @@ -1330,7 +1337,7 @@ static PHP_METHOD(HttpEnvResponse, setCookie) case IS_ARRAY: list = php_http_cookie_list_from_struct(NULL, zcookie_new); zcookie_new = &tmp; - ZVAL_OBJECT(zcookie_new, &php_http_cookie_object_new_ex(php_http_cookie_class_entry, list)->zo, 1); + ZVAL_OBJECT(zcookie_new, &php_http_cookie_object_new_ex(php_http_cookie_class_entry, list)->zo, 0); break; default: @@ -1338,7 +1345,7 @@ static PHP_METHOD(HttpEnvResponse, setCookie) list = php_http_cookie_list_parse(NULL, zs->val, zs->len, 0, NULL); zend_string_release(zs); zcookie_new = &tmp; - ZVAL_OBJECT(zcookie_new, &php_http_cookie_object_new_ex(php_http_cookie_class_entry, list)->zo, 1); + ZVAL_OBJECT(zcookie_new, &php_http_cookie_object_new_ex(php_http_cookie_class_entry, list)->zo, 0); } zend_restore_error_handling(&zeh);