dmitry          Tue Dec 14 08:58:57 2004 EDT

  Modified files:              
    /php-src/ext/soap   soap.c 
    /php-src/ext/soap/tests/bugs        bug30994.phpt 
  Log:
  Fixed bug #30994 (SOAP server unable to handle request with references).
  
  
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.126&r2=1.127&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.126 php-src/ext/soap/soap.c:1.127
--- php-src/ext/soap/soap.c:1.126       Tue Nov 16 16:04:10 2004
+++ php-src/ext/soap/soap.c     Tue Dec 14 08:58:57 2004
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: soap.c,v 1.126 2004/11/16 21:04:10 iliaa Exp $ */
+/* $Id: soap.c,v 1.127 2004/12/14 13:58:57 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2800,10 +2800,13 @@
        trav = body->children;
        while (trav != NULL) {
                if (trav->type == XML_ELEMENT_NODE) {
+/*
                        if (func != NULL) {
                                soap_server_fault("Client", "looks like we got 
\"Body\" with several functions call", NULL, NULL, NULL TSRMLS_CC);
                        }
+*/
                        func = trav;
+                       break; /* FIXME: the rest of body is ignored */
                }
                trav = trav->next;
        }
http://cvs.php.net/diff.php/php-src/ext/soap/tests/bugs/bug30994.phpt?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/soap/tests/bugs/bug30994.phpt
diff -u /dev/null php-src/ext/soap/tests/bugs/bug30994.phpt:1.2
--- /dev/null   Tue Dec 14 08:58:57 2004
+++ php-src/ext/soap/tests/bugs/bug30994.phpt   Tue Dec 14 08:58:57 2004
@@ -0,0 +1,47 @@
+--TEST--
+Bug #30994 SOAP server unable to handle request with references 
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$HTTP_RAW_POST_DATA = <<<EOF
+<?xml version="1.0" encoding="utf-8"?>
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
+       xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
+       xmlns:tns="http://spock/kunta/kunta";
+       xmlns:types="http://spock/kunta/kunta/encodedTypes";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+
+<soap:Body
+soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
+       <q1:bassCall xmlns:q1="http://spock/bass/types/kunta";>
+               <system xsi:type="xsd:string">XXX</system>
+               <function xsi:type="xsd:string">TASKTEST</function>
+               <parameter href="#id1" />
+       </q1:bassCall>
+       
+       <soapenc:Array id="id1" soapenc:arrayType="tns:Item[1]">
+               <Item href="#id2" />
+       </soapenc:Array>
+       
+       <tns:Item id="id2" xsi:type="tns:Item">
+               <key xsi:type="xsd:string">ABCabc123</key>
+               <val xsi:type="xsd:string">123456</val>
+       </tns:Item>
+       
+</soap:Body>
+</soap:Envelope>
+EOF;
+
+function bassCall() {
+  return "ok";
+}
+
+$x = new SoapServer(NULL, array("uri"=>"http://spock/kunta/kunta";));
+$x->addFunction("bassCall");
+$x->handle();
+?>
+--EXPECT--
+<?xml version="1.0" encoding="UTF-8"?>
+<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:ns1="http://spock/kunta/kunta"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"; 
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";><SOAP-ENV:Body><ns1:bassCallResponse><return
 
xsi:type="xsd:string">ok</return></ns1:bassCallResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to