}
}
-static inline void message_headers(php_http_message_t *msg, php_http_buffer_t *str)
+PHP_HTTP_API void php_http_message_update_headers(php_http_message_t *msg)
{
- php_http_array_hashkey_t key = php_http_array_hashkey_init(0);
- HashPosition pos1;
- zval **header, *h;
+ zval *h;
size_t size;
TSRMLS_FETCH_FROM_CTX(msg->ts);
- switch (msg->type) {
- case PHP_HTTP_REQUEST:
- php_http_buffer_appendf(str, PHP_HTTP_INFO_REQUEST_FMT_ARGS(&msg->http, PHP_HTTP_CRLF));
- break;
-
- case PHP_HTTP_RESPONSE:
- php_http_buffer_appendf(str, PHP_HTTP_INFO_RESPONSE_FMT_ARGS(&msg->http, PHP_HTTP_CRLF));
- break;
-
- default:
- break;
- }
-
if ((size = php_http_message_body_size(&msg->body))) {
MAKE_STD_ZVAL(h);
ZVAL_LONG(h, size);
}
}
}
+}
+static inline void message_headers(php_http_message_t *msg, php_http_buffer_t *str)
+{
+ php_http_array_hashkey_t key = php_http_array_hashkey_init(0);
+ HashPosition pos1;
+ zval **header;
+ TSRMLS_FETCH_FROM_CTX(msg->ts);
+
+ switch (msg->type) {
+ case PHP_HTTP_REQUEST:
+ php_http_buffer_appendf(str, PHP_HTTP_INFO_REQUEST_FMT_ARGS(&msg->http, PHP_HTTP_CRLF));
+ break;
+
+ case PHP_HTTP_RESPONSE:
+ php_http_buffer_appendf(str, PHP_HTTP_INFO_RESPONSE_FMT_ARGS(&msg->http, PHP_HTTP_CRLF));
+ break;
+
+ default:
+ break;
+ }
+
+ php_http_message_update_headers(msg);
FOREACH_HASH_KEYVAL(pos1, &msg->hdrs, key, header) {
if (key.type == HASH_KEY_IS_STRING) {
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;