add php_http_message_zip(): merge request/response messages for history
[m6w6/ext-http] / php_http_message.c
index 34d9ed87e4802fa695bded66cbb95d1aef687470..04e87060445a5d19b5af91d39242d91c8d030450 100644 (file)
@@ -462,6 +462,24 @@ PHP_HTTP_API php_http_message_t *php_http_message_reverse(php_http_message_t *ms
        return msg;
 }
 
+PHP_HTTP_API php_http_message_t *php_http_message_zip(php_http_message_t *one, php_http_message_t *two)
+{
+       php_http_message_t *dst = php_http_message_copy(one, NULL), *src = php_http_message_copy(two, NULL), *tmp_dst, *tmp_src, *ret = dst;
+
+       while(dst && src) {
+               tmp_dst = dst->parent;
+               tmp_src = src->parent;
+               dst->parent = src;
+               if (tmp_dst) {
+                       src->parent = tmp_dst;
+               }
+               src = tmp_src;
+               dst = tmp_dst;
+       }
+
+       return ret;
+}
+
 PHP_HTTP_API php_http_message_t *php_http_message_copy_ex(php_http_message_t *from, php_http_message_t *to, zend_bool parents)
 {
        php_http_message_t *temp, *copy = NULL;