diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 7cc9c6151e6..c57bc6e1ed8 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -1130,11 +1130,13 @@ static void model_to_zval_object(zval *ret, sdlContentModelPtr model, xmlNodePtr { switch (model->kind) { case XSD_CONTENT_ELEMENT: - if (model->u.element->name) { - xmlNodePtr node = get_node(data->children, model->u.element->name); - if (node) { - zval *val; + if (model->u.element->name) { + xmlNodePtr node = get_node(data->children, model->u.element->name); + if (node) { + zval *val; + + node = check_and_resolve_href(node); if (node && node->children && node->children->content) { if (model->u.element->fixed && strcmp(model->u.element->fixed,node->children->content) != 0) { soap_error3(E_ERROR, "Encoding: Element '%s' has fixed value '%s' (value '%s' is not allowed)", model->u.element->name, model->u.element->fixed, node->children->content); diff --git a/ext/soap/tests/bugs/bug36908.phpt b/ext/soap/tests/bugs/bug36908.phpt new file mode 100755 index 00000000000..cd0ea8b2e50 --- /dev/null +++ b/ext/soap/tests/bugs/bug36908.phpt @@ -0,0 +1,46 @@ +--TEST-- +Bug #36908 (wsdl default value overrides value in soap request) +--SKIPIF-- + +--INI-- +soap.wsdl_cache_enabled=0 +--FILE-- +region_id; + } +} +$input = +' + + + + + + + + + 9 + +'; +ini_set('soap.wsdl_cache_enabled', false); +$server = new SoapServer(dirname(__FILE__)."/bug36908.wsdl"); +$server->setClass("PublisherService"); +$server->handle($input); +?> +--EXPECT-- + +9 diff --git a/ext/soap/tests/bugs/bug36908.wsdl b/ext/soap/tests/bugs/bug36908.wsdl new file mode 100755 index 00000000000..f3be3f6304b --- /dev/null +++ b/ext/soap/tests/bugs/bug36908.wsdl @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +