|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2008-01-29 11:46 UTC] dmitry@php.net
[2008-01-29 12:35 UTC] Michael at Sohmen dot de
[2008-11-28 14:40 UTC] dmitry@php.net
[2013-10-15 18:26 UTC] wal3 at mindspring dot com
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 08:00:01 2025 UTC |
Description: ------------ Hi, when parsing a wsdl file with _duplicate_ functions defined by <operation name..>, PHP SOAP parser stops with following error message: "Parsing WSDL: <functionname> already defined" The Problem is - duplicate functions are used with function overloading - and o.k. for the Java SOAP interface.. Other way, by automated file generation the following code would produce duplicate function definitions in wsdl, one with 1, second with 2 Params: function foofunction($a, $optional_b = null) I append a bit of wsdl-code which dousn't work as expected as an example; in php_sdl.c I found some lines where most probably the error message is generated, and zend_hash_add(..) fails. Greetings, Michael Reproduce code: --------------- // wdsl example - Problem: [snip] <message name="foofunction"> <part name="a" type="xsd:int"/> <part name="optional_b" type="xsd:int"/> </message> <message name="foofunction"> <part name="a" type="xsd:int"/> </message> operation name="foofunction"> <input message="tns:foofunctionRequest"/> <output message="tns:foofunctionResponse"/> </operation> [snip] // extract from Source php_sdl.c static void load_wsdl_ex(zval *this_ptr, char *struri, sdlCtx *ctx, int include TSRMLS_DC) { [snip] } else if (node_is_equal(trav,"message")) { xmlAttrPtr name = get_attribute(trav->properties, "name"); if (name && name->children && name->children->content) { if (zend_hash_add(&ctx->messages, (char*)name->children->content, xmlStrlen(name->children->content)+1,&trav, sizeof(xmlNodePtr), NULL) != SUCCESS) { soap_error1(E_ERROR, "Parsing WSDL: <message> '%s' already defined", name->children->content); [snip] Actual result: -------------- Parsing WSDL: <functionname> already defined