* Fixed missing "parentMessage" entry in print_r($HttpMessageObject)
[m6w6/ext-http] / http_message_object.c
index 4cb201a2e6f21093403b525301c5d36fbc675a2e..7069e6aa50f3c058e1f3623938062ddd5eefafb7 100644 (file)
@@ -278,8 +278,8 @@ void _http_message_object_reverse(zval *this_ptr, zval *return_value TSRMLS_DC)
 void _http_message_object_prepend_ex(zval *this_ptr, zval *prepend, zend_bool top TSRMLS_DC)
 {
        zval m;
-       http_message *save_parent_msg;
-       zend_object_value save_parent_obj;
+       http_message *save_parent_msg = NULL;
+       zend_object_value save_parent_obj = {0, NULL};
        getObject(http_message_object, obj);
        getObjectEx(http_message_object, prepend_obj, prepend);
                
@@ -596,7 +596,7 @@ static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC)
        getObjectEx(http_message_object, obj, object);
        http_message *msg = obj->message;
        HashTable *props = OBJ_PROP(obj);
-       zval array;
+       zval array, *parent;
        
        INIT_ZARR(array, props);
 
@@ -651,6 +651,14 @@ static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC)
        zend_hash_copy(Z_ARRVAL_P(headers), &msg->hdrs, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
        ASSOC_PROP(array, zval, "headers", headers);
        ASSOC_STRINGL(array, "body", PHPSTR_VAL(msg), PHPSTR_LEN(msg));
+       
+       MAKE_STD_ZVAL(parent);
+       if (msg->parent) {
+               ZVAL_OBJVAL(parent, obj->parent, 1);
+       } else {
+               ZVAL_NULL(parent);
+       }
+       ASSOC_PROP(array, zval, "parentMessage", parent);
 
        return OBJ_PROP(obj);
 }
@@ -1127,20 +1135,22 @@ PHP_METHOD(HttpMessage, setHttpVersion)
  * Get parent Message.
  * 
  * Returns the parent HttpMessage on success, or NULL if there's none.
+ *
+ * Throws HttpMessageException.
  */
 PHP_METHOD(HttpMessage, getParentMessage)
 {
-       NO_ARGS;
-
-       IF_RETVAL_USED {
+       SET_EH_THROW_HTTP();
+       NO_ARGS {
                getObject(http_message_object, obj);
 
                if (obj->message->parent) {
                        RETVAL_OBJVAL(obj->parent, 1);
                } else {
-                       RETVAL_NULL();
+                       http_error(HE_WARNING, HTTP_E_RUNTIME, "HttpMessage does not have a parent message");
                }
        }
+       SET_EH_NORMAL();
 }
 /* }}} */