summaryrefslogtreecommitdiff
path: root/ext/soap/php_sdl.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2007-05-10 14:58:17 +0000
committerDmitry Stogov <dmitry@php.net>2007-05-10 14:58:17 +0000
commitfb045249e572c922fc7a2ea50cc8a428ab3607c6 (patch)
tree114382134f4f880a0de0a93e97cfa140c5721ebe /ext/soap/php_sdl.c
parente7577d57cdae2e702961455bbe25ff02452f2ea0 (diff)
downloadphp-git-fb045249e572c922fc7a2ea50cc8a428ab3607c6.tar.gz
Fixed bug #41337 (WSDL parsing doesn't ignore non soap bindings)
Diffstat (limited to 'ext/soap/php_sdl.c')
-rw-r--r--ext/soap/php_sdl.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index 923215228f..ec1d07e81a 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -654,6 +654,7 @@ static sdlPtr load_wsdl(zval *this_ptr, char *struri TSRMLS_DC)
for (i = 0; i < n; i++) {
xmlNodePtr *tmp, service;
xmlNodePtr trav, port;
+ int has_soap_port = 0;
zend_hash_get_current_data(&ctx.services, (void **)&tmp);
service = *tmp;
@@ -716,8 +717,15 @@ static sdlPtr load_wsdl(zval *this_ptr, char *struri TSRMLS_DC)
trav2 = trav2->next;
}
if (!address) {
- soap_error0(E_ERROR, "Parsing WSDL: No address associated with <port>");
+ if (has_soap_port || trav->next) {
+ efree(tmpbinding);
+ trav = trav->next;
+ continue;
+ } else {
+ soap_error0(E_ERROR, "Parsing WSDL: No address associated with <port>");
+ }
}
+ has_soap_port = 1;
location = get_attribute(address->properties, "location");
if (!location) {