fixup message/body serialization
authorMichael Wallner <mike@php.net>
Wed, 4 Aug 2021 08:02:39 +0000 (10:02 +0200)
committerMichael Wallner <mike@php.net>
Wed, 4 Aug 2021 08:02:39 +0000 (10:02 +0200)
src/php_http_message.c
src/php_http_message_body.c
tests/message002.phpt

index d09b0b46f4cd874ccc485b0e00b533521f1acde3..72870313b8575429a39e78ae04965d1f63df66c4 100644 (file)
@@ -688,6 +688,8 @@ static void php_http_message_object_prophandler_set_parent_message(php_http_mess
        do { \
                if (!obj->message) { \
                        obj->message = php_http_message_init(NULL, 0, NULL); \
+               } else if (!obj->body && php_http_message_body_size(obj->message->body)) { \
+                       php_http_message_object_init_body_object(obj); \
                } \
        } while(0)
 
index 72cfa4a420d2225f77c0aca18bd7d569d8ff7132..90714d93e07e029dca041630e52bbde7c07fda3c 100644 (file)
@@ -714,7 +714,7 @@ PHP_METHOD(HttpMessageBody, __unserialize)
        if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS(), "h", &arr)) {
                zval *zv = zend_hash_index_find(arr, 0);
 
-               if (0 && zv) {
+               if (zv) {
                        zend_string *zs = zval_get_string(zv);
                        php_stream *s = php_http_mem_stream_open(0, zs);
                        php_http_message_body_object_t *obj = PHP_HTTP_OBJ(NULL, getThis());
@@ -742,7 +742,6 @@ PHP_METHOD(HttpMessageBody, __serialize)
        zs = php_http_message_body_to_string(obj->body, 0, 0);
        if (zs) {
                add_index_str(return_value, 0, zs);
-               zend_string_release(zs);
        }
 }
 
index 573fdbd8a9ded3106f72c0a1f0f4ffdff8f038b1..da0b7996364f303c57494cd4e70d73eff9cacf0b 100644 (file)
@@ -42,7 +42,8 @@ object(%s)#%d (13) {
   ["type":protected]=>
   int(1)
   ["body":protected]=>
-  NULL
+  object(http\Message\Body)#3 (0) {
+  }
   ["requestMethod":protected]=>
   string(4) "POST"
   ["requestUrl":protected]=>