summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--ext/soap/php_sdl.c36
-rw-r--r--ext/soap/tests/bugs/bug29109.phpt18
-rw-r--r--ext/soap/tests/bugs/bug29109.wsdl121
-rw-r--r--ext/soap/tests/bugs/bug29236.phpt20
-rw-r--r--ext/soap/tests/bugs/bug29236.wsdl287
6 files changed, 464 insertions, 20 deletions
diff --git a/NEWS b/NEWS
index d2c6d65b6c..582c466a6c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2004, PHP 5.1.0
+- Fixed bug #29236 (memory error when wsdl-cache is enabled). (Dmitry)
+- Fixed bug #29109 (SoapFault exception: [WSDL] Out of memory). (Dmitry)
- Fixed bug #29061 (soap extension segfaults). (Dmitry)
- Added zlib stream filter suport. (Sara)
- Changed the implementation of TRUE, FALSE, and NULL from constants to
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index 9865e02cdc..d8518cb298 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -1459,14 +1459,12 @@ static sdlPtr get_sdl_from_cache(const char *fn, const char *uri, time_t t)
binding->name = sdl_deserialize_string(&in);
binding->location = sdl_deserialize_string(&in);
WSDL_CACHE_GET_1(binding->bindingType,sdlBindingType,&in);
- if (binding->bindingType == BINDING_SOAP) {
- if (*in != 0) {
- sdlSoapBindingPtr soap_binding = binding->bindingAttributes = emalloc(sizeof(sdlSoapBinding));
- WSDL_CACHE_GET_1(soap_binding->style,sdlEncodingStyle,&in);
- WSDL_CACHE_GET_1(soap_binding->transport,sdlTransport,&in);
- } else {
- WSDL_CACHE_SKIP(1,&in);
- }
+ if (binding->bindingType == BINDING_SOAP && *in != 0) {
+ sdlSoapBindingPtr soap_binding = binding->bindingAttributes = emalloc(sizeof(sdlSoapBinding));
+ WSDL_CACHE_GET_1(soap_binding->style,sdlEncodingStyle,&in);
+ WSDL_CACHE_GET_1(soap_binding->transport,sdlTransport,&in);
+ } else {
+ WSDL_CACHE_SKIP(1,&in);
}
bindings[i] = binding;
}
@@ -1490,18 +1488,16 @@ static sdlPtr get_sdl_from_cache(const char *fn, const char *uri, time_t t)
} else {
func->binding = bindings[binding_num-1];
}
- if (func->binding && func->binding->bindingType == BINDING_SOAP) {
- if (*in != 0) {
- sdlSoapBindingFunctionPtr binding = func->bindingAttributes = emalloc(sizeof(sdlSoapBindingFunction));
- memset(binding, 0, sizeof(sdlSoapBindingFunction));
- WSDL_CACHE_GET_1(binding->style,sdlEncodingStyle,&in);
- binding->soapAction = sdl_deserialize_string(&in);
- sdl_deserialize_soap_body(&binding->input, encoders, types, &in);
- sdl_deserialize_soap_body(&binding->output, encoders, types, &in);
- } else {
- WSDL_CACHE_SKIP(1, &in);
- func->bindingAttributes = NULL;
- }
+ if (func->binding && func->binding->bindingType == BINDING_SOAP && *in != 0) {
+ sdlSoapBindingFunctionPtr binding = func->bindingAttributes = emalloc(sizeof(sdlSoapBindingFunction));
+ memset(binding, 0, sizeof(sdlSoapBindingFunction));
+ WSDL_CACHE_GET_1(binding->style,sdlEncodingStyle,&in);
+ binding->soapAction = sdl_deserialize_string(&in);
+ sdl_deserialize_soap_body(&binding->input, encoders, types, &in);
+ sdl_deserialize_soap_body(&binding->output, encoders, types, &in);
+ } else {
+ WSDL_CACHE_SKIP(1, &in);
+ func->bindingAttributes = NULL;
}
func->requestParameters = sdl_deserialize_parameters(encoders, types, &in);
diff --git a/ext/soap/tests/bugs/bug29109.phpt b/ext/soap/tests/bugs/bug29109.phpt
new file mode 100644
index 0000000000..91d3ea265f
--- /dev/null
+++ b/ext/soap/tests/bugs/bug29109.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Bug #29109 (Uncaught SoapFault exception: [WSDL] Out of memory)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$client = new SoapClient(dirname(__FILE__)."/bug29109.wsdl");
+var_dump($client->__getFunctions());
+?>
+--EXPECT--
+array(3) {
+ [0]=>
+ string(53) "HelloWorldResponse HelloWorld(HelloWorld $parameters)"
+ [1]=>
+ string(19) "string HelloWorld()"
+ [2]=>
+ string(19) "string HelloWorld()"
+} \ No newline at end of file
diff --git a/ext/soap/tests/bugs/bug29109.wsdl b/ext/soap/tests/bugs/bug29109.wsdl
new file mode 100644
index 0000000000..800cd2357d
--- /dev/null
+++ b/ext/soap/tests/bugs/bug29109.wsdl
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="windows-1257"?>
+<definitions xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
+xmlns:s0="http://tempuri.org/"
+xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+xmlns:s="http://www.w3.org/2001/XMLSchema"
+xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
+xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" name="test"
+targetNamespace="http://tempuri.org/"
+xmlns="http://schemas.xmlsoap.org/wsdl/">
+ <types>
+ <xs:schema elementFormDefault="qualified"
+targetNamespace="http://tempuri.org/"
+xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="HelloWorld">
+ <xs:complexType />
+ </xs:element>
+ <xs:element name="HelloWorldResponse">
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="0" maxOccurs="1"
+name="HelloWorldResult" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="string" type="xs:string" />
+ </xs:schema>
+ </types>
+ <message name="HelloWorldSoapIn">
+ <part name="parameters" element="s0:HelloWorld" />
+
+ </message>
+ <message name="HelloWorldSoapOut">
+ <part name="parameters" element="s0:HelloWorldResponse" />
+ </message>
+ <message name="HelloWorldHttpGetIn" />
+ <message name="HelloWorldHttpGetOut">
+ <part name="Body" element="s0:string" />
+ </message>
+ <message name="HelloWorldHttpPostIn" />
+
+ <message name="HelloWorldHttpPostOut">
+ <part name="Body" element="s0:string" />
+ </message>
+ <portType name="testSoap">
+ <operation name="HelloWorld">
+ <input message="s0:HelloWorldSoapIn" />
+ <output message="s0:HelloWorldSoapOut" />
+ </operation>
+ </portType>
+
+ <portType name="testHttpGet">
+ <operation name="HelloWorld">
+ <input message="s0:HelloWorldHttpGetIn" />
+ <output message="s0:HelloWorldHttpGetOut" />
+ </operation>
+ </portType>
+ <portType name="testHttpPost">
+ <operation name="HelloWorld">
+ <input message="s0:HelloWorldHttpPostIn" />
+
+ <output message="s0:HelloWorldHttpPostOut" />
+ </operation>
+ </portType>
+ <binding name="testSoap" type="s0:testSoap">
+ <soap:binding style="document"
+transport="http://schemas.xmlsoap.org/soap/http" />
+ <operation name="HelloWorld">
+ <soap:operation soapAction="http://tempuri.org/HelloWorld"
+style="document" />
+ <input>
+ <soap:body use="literal" />
+
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+ <binding name="testHttpGet" type="s0:testHttpGet">
+ <http:binding verb="GET" />
+ <operation name="HelloWorld">
+
+ <http:operation location="/HelloWorld" />
+ <input>
+ <http:urlEncoded />
+ </input>
+ <output>
+ <mime:mimeXml part="Body" />
+ </output>
+ </operation>
+ </binding>
+
+ <binding name="testHttpPost" type="s0:testHttpPost">
+ <http:binding verb="POST" />
+ <operation name="HelloWorld">
+ <http:operation location="/HelloWorld" />
+ <input>
+ <mime:content part="" type="application/x-www-form-urlencoded"
+/>
+ </input>
+ <output>
+ <mime:mimeXml part="Body" />
+
+ </output>
+ </operation>
+ </binding>
+ <service name="test">
+ <port name="testSoap" binding="s0:testSoap">
+ <soap:address location="http://localhost:81/test.asmx" />
+ </port>
+ <port name="testHttpGet" binding="s0:testHttpGet">
+ <http:address location="http://localhost:81/test.asmx" />
+
+ </port>
+ <port name="testHttpPost" binding="s0:testHttpPost">
+ <http:address location="http://localhost:81/test.asmx" />
+ </port>
+ </service>
+</definitions>
diff --git a/ext/soap/tests/bugs/bug29236.phpt b/ext/soap/tests/bugs/bug29236.phpt
new file mode 100644
index 0000000000..372449fbb2
--- /dev/null
+++ b/ext/soap/tests/bugs/bug29236.phpt
@@ -0,0 +1,20 @@
+--TEST--
+Bug #29236 (memory error when wsdl-cache is enabled)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?
+$client = new SoapClient(dirname(__FILE__)."/bug29236.wsdl");
+var_dump($client->__getFunctions());
+?>
+--EXPECT--
+array(4) {
+ [0]=>
+ string(59) "StartSessionResponse StartSession(StartSession $parameters)"
+ [1]=>
+ string(62) "VerifySessionResponse VerifySession(VerifySession $parameters)"
+ [2]=>
+ string(41) "LogoutResponse Logout(Logout $parameters)"
+ [3]=>
+ string(62) "GetSystemInfoResponse GetSystemInfo(GetSystemInfo $parameters)"
+} \ No newline at end of file
diff --git a/ext/soap/tests/bugs/bug29236.wsdl b/ext/soap/tests/bugs/bug29236.wsdl
new file mode 100644
index 0000000000..d60a4871d4
--- /dev/null
+++ b/ext/soap/tests/bugs/bug29236.wsdl
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="utf-8"?>
+<definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://isis.ais.ucla.edu/ws/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://isis.ais.ucla.edu/ws/" xmlns="http://schemas.xmlsoap.org/wsdl/">
+ <types>
+ <s:schema elementFormDefault="qualified" targetNamespace="http://isis.ais.ucla.edu/ws/">
+ <s:element name="StartSession">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="uclaId" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="userIpAddr" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="StartSessionResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="1" maxOccurs="1" name="iwsResponse" nillable="true" type="s0:IwsResponse" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:complexType name="IwsResponse">
+ <s:sequence>
+ <s:element minOccurs="1" maxOccurs="1" name="sessionInfo" nillable="true" type="s0:IwsSession" />
+ <s:element minOccurs="1" maxOccurs="1" name="errorInfo" nillable="true" type="s0:IwsErrorCollection" />
+ </s:sequence>
+ <s:attribute name="action" type="s0:ActionEnum" />
+ <s:attribute name="hasErrors" type="s:boolean" />
+ <s:attribute name="transactionId" type="s:long" />
+ </s:complexType>
+ <s:complexType name="IwsSession">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="userAttributes" type="s0:ArrayOfIwsUserAttribute" />
+ <s:element minOccurs="0" maxOccurs="1" name="accounts" type="s0:ArrayOfIwsAccount" />
+ <s:element minOccurs="1" maxOccurs="1" name="ticket" nillable="true" type="s:string" />
+ <s:element minOccurs="1" maxOccurs="1" name="uclaId" nillable="true" type="s:string" />
+ </s:sequence>
+ <s:attribute name="status" type="s0:SessionStatus" />
+ </s:complexType>
+ <s:complexType name="ArrayOfIwsUserAttribute">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="attribute" type="s0:IwsUserAttribute" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="IwsUserAttribute">
+ <s:attribute name="name" type="s:string" />
+ <s:attribute name="value" type="s:string" />
+ </s:complexType>
+ <s:complexType name="ArrayOfIwsAccount">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="account" type="s0:IwsAccount" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="IwsAccount">
+ <s:attribute name="loginId" type="s:string" />
+ <s:attribute name="type" type="s0:LoginType" />
+ <s:attribute name="status" type="s0:AccountStatus" />
+ </s:complexType>
+ <s:simpleType name="LoginType">
+ <s:restriction base="s:string">
+ <s:enumeration value="BruinOnline" />
+ <s:enumeration value="ACF2" />
+ <s:enumeration value="QDB" />
+ <s:enumeration value="UID" />
+ <s:enumeration value="CommonLogon" />
+ <s:enumeration value="RACF" />
+ </s:restriction>
+ </s:simpleType>
+ <s:simpleType name="AccountStatus">
+ <s:restriction base="s:string">
+ <s:enumeration value="Unknown" />
+ <s:enumeration value="Active" />
+ <s:enumeration value="Authenticated" />
+ <s:enumeration value="AuthenticatedWithCachedCredential" />
+ <s:enumeration value="NotAuthenticated" />
+ <s:enumeration value="PermmanentlySuspended" />
+ <s:enumeration value="TemporarilySuspended" />
+ <s:enumeration value="PasswordResetRequired" />
+ <s:enumeration value="InvalidID" />
+ </s:restriction>
+ </s:simpleType>
+ <s:simpleType name="SessionStatus">
+ <s:restriction base="s:string">
+ <s:enumeration value="Uninitialized" />
+ <s:enumeration value="Active" />
+ <s:enumeration value="ActiveWithCachedCredential" />
+ <s:enumeration value="ActiveWithMultipleCredentials" />
+ <s:enumeration value="Expired" />
+ </s:restriction>
+ </s:simpleType>
+ <s:complexType name="IwsErrorCollection">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="errors" type="s0:ArrayOfIwsError" />
+ </s:sequence>
+ <s:attribute name="count" type="s:int" />
+ </s:complexType>
+ <s:complexType name="ArrayOfIwsError">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="error" type="s0:IwsError" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="IwsError">
+ <s:attribute name="errorCode" type="s:int" />
+ <s:attribute name="detail" type="s:string" />
+ </s:complexType>
+ <s:simpleType name="ActionEnum">
+ <s:restriction base="s:string">
+ <s:enumeration value="GetInfo" />
+ <s:enumeration value="Start" />
+ <s:enumeration value="Verify" />
+ <s:enumeration value="Logout" />
+ </s:restriction>
+ </s:simpleType>
+ <s:element name="wsConsumerCredential" type="s0:WsConsumerCredential" />
+ <s:complexType name="WsConsumerCredential">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="id" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+ <s:element name="VerifySession">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="userIpAddr" type="s:string" />
+ <s:element minOccurs="1" maxOccurs="1" name="returnExtendedAttributes" type="s:boolean" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="VerifySessionResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="1" maxOccurs="1" name="iwsResponse" nillable="true" type="s0:IwsResponse" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="Logout">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" />
+ <s:element minOccurs="0" maxOccurs="1" name="userIpAddr" type="s:string" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="LogoutResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="1" maxOccurs="1" name="iwsResponse" nillable="true" type="s0:IwsResponse" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:element name="GetSystemInfo">
+ <s:complexType />
+ </s:element>
+ <s:element name="GetSystemInfoResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="GetSystemInfoResult" type="s0:ArrayOfIwsAttribute" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+ <s:complexType name="ArrayOfIwsAttribute">
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="unbounded" name="IwsAttribute" type="s0:IwsAttribute" />
+ </s:sequence>
+ </s:complexType>
+ <s:complexType name="IwsAttribute">
+ <s:attribute name="name" type="s:string" />
+ <s:attribute name="value" type="s:string" />
+ </s:complexType>
+ </s:schema>
+ </types>
+ <message name="StartSessionSoapIn">
+ <part name="parameters" element="s0:StartSession" />
+ </message>
+ <message name="StartSessionSoapOut">
+ <part name="parameters" element="s0:StartSessionResponse" />
+ </message>
+ <message name="StartSessionwsConsumerCredential">
+ <part name="wsConsumerCredential" element="s0:wsConsumerCredential" />
+ </message>
+ <message name="VerifySessionSoapIn">
+ <part name="parameters" element="s0:VerifySession" />
+ </message>
+ <message name="VerifySessionSoapOut">
+ <part name="parameters" element="s0:VerifySessionResponse" />
+ </message>
+ <message name="VerifySessionwsConsumerCredential">
+ <part name="wsConsumerCredential" element="s0:wsConsumerCredential" />
+ </message>
+ <message name="LogoutSoapIn">
+ <part name="parameters" element="s0:Logout" />
+ </message>
+ <message name="LogoutSoapOut">
+ <part name="parameters" element="s0:LogoutResponse" />
+ </message>
+ <message name="LogoutwsConsumerCredential">
+ <part name="wsConsumerCredential" element="s0:wsConsumerCredential" />
+ </message>
+ <message name="GetSystemInfoSoapIn">
+ <part name="parameters" element="s0:GetSystemInfo" />
+ </message>
+ <message name="GetSystemInfoSoapOut">
+ <part name="parameters" element="s0:GetSystemInfoResponse" />
+ </message>
+ <message name="GetSystemInfowsConsumerCredential">
+ <part name="wsConsumerCredential" element="s0:wsConsumerCredential" />
+ </message>
+ <portType name="IsisSoap">
+ <operation name="StartSession">
+ <input message="s0:StartSessionSoapIn" />
+ <output message="s0:StartSessionSoapOut" />
+ </operation>
+ <operation name="VerifySession">
+ <input message="s0:VerifySessionSoapIn" />
+ <output message="s0:VerifySessionSoapOut" />
+ </operation>
+ <operation name="Logout">
+ <input message="s0:LogoutSoapIn" />
+ <output message="s0:LogoutSoapOut" />
+ </operation>
+ <operation name="GetSystemInfo">
+ <input message="s0:GetSystemInfoSoapIn" />
+ <output message="s0:GetSystemInfoSoapOut" />
+ </operation>
+ </portType>
+ <portType name="IsisHttpGet" />
+ <portType name="IsisHttpPost" />
+ <binding name="IsisSoap" type="s0:IsisSoap">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
+ <operation name="StartSession">
+ <soap:operation soapAction="http://isis.ais.ucla.edu/ws/StartSession" style="document" />
+ <input>
+ <soap:body use="literal" />
+ <soap:header d5p1:required="true" message="s0:StartSessionwsConsumerCredential" part="wsConsumerCredential" use="literal" xmlns:d5p1="http://schemas.xmlsoap.org/wsdl/" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="VerifySession">
+ <soap:operation soapAction="http://isis.ais.ucla.edu/ws/VerifySession" style="document" />
+ <input>
+ <soap:body use="literal" />
+ <soap:header d5p1:required="true" message="s0:VerifySessionwsConsumerCredential" part="wsConsumerCredential" use="literal" xmlns:d5p1="http://schemas.xmlsoap.org/wsdl/" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="Logout">
+ <soap:operation soapAction="http://isis.ais.ucla.edu/ws/Logout" style="document" />
+ <input>
+ <soap:body use="literal" />
+ <soap:header d5p1:required="true" message="s0:LogoutwsConsumerCredential" part="wsConsumerCredential" use="literal" xmlns:d5p1="http://schemas.xmlsoap.org/wsdl/" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ <operation name="GetSystemInfo">
+ <soap:operation soapAction="http://isis.ais.ucla.edu/ws/GetSystemInfo" style="document" />
+ <input>
+ <soap:body use="literal" />
+ <soap:header d5p1:required="true" message="s0:GetSystemInfowsConsumerCredential" part="wsConsumerCredential" use="literal" xmlns:d5p1="http://schemas.xmlsoap.org/wsdl/" />
+ </input>
+ <output>
+ <soap:body use="literal" />
+ </output>
+ </operation>
+ </binding>
+ <binding name="IsisHttpGet" type="s0:IsisHttpGet">
+ <http:binding verb="GET" />
+ </binding>
+ <binding name="IsisHttpPost" type="s0:IsisHttpPost">
+ <http:binding verb="POST" />
+ </binding>
+ <service name="Isis">
+ <port name="IsisSoap" binding="s0:IsisSoap">
+ <soap:address location="http://isisdev1.tig.ucla.edu/iws/v4.asmx" />
+ </port>
+ <port name="IsisHttpGet" binding="s0:IsisHttpGet">
+ <http:address location="http://isisdev1.tig.ucla.edu/iws/v4.asmx" />
+ </port>
+ <port name="IsisHttpPost" binding="s0:IsisHttpPost">
+ <http:address location="http://isisdev1.tig.ucla.edu/iws/v4.asmx" />
+ </port>
+ </service>
+</definitions> \ No newline at end of file