]> granicus.if.org Git - php/commitdiff
Fixed bug #37054 (SoapClient Error Fetching http headers)
authorDmitry Stogov <dmitry@php.net>
Thu, 13 Apr 2006 08:18:36 +0000 (08:18 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 13 Apr 2006 08:18:36 +0000 (08:18 +0000)
NEWS
ext/soap/php_http.c
ext/soap/soap.c

diff --git a/NEWS b/NEWS
index 26763079c8cc283f46ded2b10410d95131e13fc1..79476043268ebcf0fa953e8efe59bf8e0946d81c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,7 @@ PHP                                                                        NEWS
   which are unaccessible). (Tony)
 - Fixed bug #37055 (incorrect reference counting for persistent OCI8 
   connections). (Tony)
+- Fixed bug #37054 (SoapClient Error Fetching http headers). (Dmitry)
 - Fixed bug #37053 (html_errors with internal classes produces wrong links). 
   (Tony)
 - Fixed bug #37046 (foreach breaks static scope). (Dmitry)
index 34e55b2bf3e742b4f1da3fa3ac27ea120c1ac45e..e70a006dcbfe0a4bbb7377fc57a00df9921ad269 100644 (file)
@@ -416,13 +416,22 @@ try_again:
                        smart_str_appendc(&soap_headers, ':');
                        smart_str_append_unsigned(&soap_headers, phpurl->port);
                }
-                               smart_str_append_const(&soap_headers, "\r\n"
-                       "Connection: Keep-Alive\r\n"
+               smart_str_append_const(&soap_headers, "\r\n"
+                       "Connection: Keep-Alive\r\n");
 /*
                        "Connection: close\r\n"
                        "Accept: text/html; text/xml; text/plain\r\n"
 */
-                       "User-Agent: PHP SOAP 0.1\r\n");
+               if (zend_hash_find(Z_OBJPROP_P(this_ptr), "_user_agent", sizeof("_user_agent"), (void **)&tmp) == SUCCESS &&
+                   Z_TYPE_PP(tmp) == IS_STRING) {
+                       if (Z_STRLEN_PP(tmp) > 0) {
+                               smart_str_append_const(&soap_headers, "User-Agent: ");
+                               smart_str_appendl(&soap_headers, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp));
+                               smart_str_append_const(&soap_headers, "\r\n");
+                       }
+               } else{
+                       smart_str_append_const(&soap_headers, "User-Agent: PHP-SOAP/"PHP_VERSION"\r\n");
+               }
 
                smart_str_append(&soap_headers, &soap_headers_z);
                smart_str_free(&soap_headers_z);
index 0962d8e7856acaca8b251fe6add1bec4aade7870..d1c5cfe9ccb0d771a6dadc7fcd65a786670b8136 100644 (file)
@@ -2284,6 +2284,11 @@ PHP_METHOD(SoapClient, SoapClient)
                        persistent = zend_is_true(*tmp);
                }
 
+               if (zend_hash_find(ht, "user_agent", sizeof("user_agent"), (void**)&tmp) == SUCCESS &&
+                   Z_TYPE_PP(tmp) == IS_STRING) {
+                       add_property_stringl(this_ptr, "_user_agent", Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1);
+               }
+
        } else if (wsdl == NULL) {
                php_error_docref(NULL TSRMLS_CC, E_ERROR, "'location' and 'uri' options are requred in nonWSDL mode");
                return;