diff options
Diffstat (limited to 'ext/soap/php_packet_soap.c')
-rw-r--r-- | ext/soap/php_packet_soap.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/ext/soap/php_packet_soap.c b/ext/soap/php_packet_soap.c index 68cb83b77c..b78fdee888 100644 --- a/ext/soap/php_packet_soap.c +++ b/ext/soap/php_packet_soap.c @@ -268,11 +268,16 @@ int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunction val = cur; } else { val = get_node(cur->children, param->paramName); - if (val == NULL && res_count == 1) { - val = get_node(cur->children, "return"); - } - if (val == NULL && res_count == 1) { - val = get_node(cur->children, "result"); + if (res_count == 1) { + if (val == NULL) { + val = get_node(cur->children, "return"); + } + if (val == NULL) { + val = get_node(cur->children, "result"); + } + if (val == NULL && cur->children && cur->children->next == NULL) { + val = cur->children; + } } } } |