diff options
Diffstat (limited to 'ext/soap/php_packet_soap.c')
| -rw-r--r-- | ext/soap/php_packet_soap.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ext/soap/php_packet_soap.c b/ext/soap/php_packet_soap.c index 7792c1cd91..84a0c5d75e 100644 --- a/ext/soap/php_packet_soap.c +++ b/ext/soap/php_packet_soap.c @@ -22,7 +22,7 @@ #include "php_soap.h" /* SOAP client calls this function to parse response from SOAP server */ -int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunctionPtr fn, char *fn_name, zval *return_value TSRMLS_DC) +int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunctionPtr fn, char *fn_name, zval *return_value, zval *soap_headers TSRMLS_DC) { char* envelope_ns = NULL; xmlDocPtr response; @@ -177,6 +177,17 @@ int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunction } } + if (soap_headers && head) { + trav = head->children; + while (trav != NULL) { + if (trav->type == XML_ELEMENT_NODE) { + zval *val = master_to_zval(NULL, trav); + add_assoc_zval(soap_headers, (char*)trav->name, val); + } + trav = trav->next; + } + } + /* Check if <Body> contains <Fault> element */ fault = get_node_ex(body->children,"Fault",envelope_ns); if (fault != NULL) { |
