pierrick                                 Fri, 18 Nov 2011 13:24:35 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=319472

Log:
Added new SoapClient option "keep_alive". FR #60329

Bug: https://bugs.php.net/60329 (Open) New keep_alive option
      
Changed paths:
    U   php/php-src/branches/PHP_5_4/NEWS
    U   php/php-src/branches/PHP_5_4/ext/soap/php_http.c
    U   php/php-src/branches/PHP_5_4/ext/soap/soap.c
    U   php/php-src/trunk/ext/soap/php_http.c
    U   php/php-src/trunk/ext/soap/soap.c

Modified: php/php-src/branches/PHP_5_4/NEWS
===================================================================
--- php/php-src/branches/PHP_5_4/NEWS   2011-11-18 13:13:38 UTC (rev 319471)
+++ php/php-src/branches/PHP_5_4/NEWS   2011-11-18 13:24:35 UTC (rev 319472)
@@ -31,6 +31,9 @@
   . Fixed bug #60282 (Segfault when using ob_gzhandler() with open buffers).
     (Laruence)

+- SOAP extension:
+  . Added new SoapClient option "keep_alive". FR #60329. (Pierrick)
+
 - Tidy:
   . Fixed bug #54682 (Tidy::diagnose() NULL pointer dereference).
     (Maksymilian Arciemowicz, Felipe)

Modified: php/php-src/branches/PHP_5_4/ext/soap/php_http.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/soap/php_http.c    2011-11-18 13:13:38 UTC 
(rev 319471)
+++ php/php-src/branches/PHP_5_4/ext/soap/php_http.c    2011-11-18 13:24:35 UTC 
(rev 319472)
@@ -433,12 +433,14 @@
                        smart_str_appendc(&soap_headers, ':');
                        smart_str_append_unsigned(&soap_headers, phpurl->port);
                }
-               if (http_1_1) {
+               if (!http_1_1 ||
+                       (zend_hash_find(Z_OBJPROP_P(this_ptr), "_keep_alive", 
sizeof("_keep_alive"), (void **)&tmp) == SUCCESS &&
+                        Z_LVAL_PP(tmp) == 0)) {
                        smart_str_append_const(&soap_headers, "\r\n"
-                               "Connection: Keep-Alive\r\n");
+                               "Connection: close\r\n");
                } else {
                        smart_str_append_const(&soap_headers, "\r\n"
-                               "Connection: close\r\n");
+                               "Connection: Keep-Alive\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) {

Modified: php/php-src/branches/PHP_5_4/ext/soap/soap.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/soap/soap.c        2011-11-18 13:13:38 UTC 
(rev 319471)
+++ php/php-src/branches/PHP_5_4/ext/soap/soap.c        2011-11-18 13:24:35 UTC 
(rev 319472)
@@ -2469,6 +2469,11 @@
                    Z_TYPE_PP(tmp) == IS_STRING) {
                        add_property_stringl(this_ptr, "_user_agent", 
Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1);
                }
+
+               if (zend_hash_find(ht, "keep_alive", sizeof("keep_alive"), 
(void**)&tmp) == SUCCESS &&
+                               (Z_TYPE_PP(tmp) == IS_BOOL || Z_TYPE_PP(tmp) == 
IS_LONG) && Z_LVAL_PP(tmp) == 0) {
+                       add_property_long(this_ptr, "_keep_alive", 0);
+               }
        } else if (Z_TYPE_P(wsdl) == IS_NULL) {
                php_error_docref(NULL TSRMLS_CC, E_ERROR, "'location' and 'uri' 
options are required in nonWSDL mode");
        }

Modified: php/php-src/trunk/ext/soap/php_http.c
===================================================================
--- php/php-src/trunk/ext/soap/php_http.c       2011-11-18 13:13:38 UTC (rev 
319471)
+++ php/php-src/trunk/ext/soap/php_http.c       2011-11-18 13:24:35 UTC (rev 
319472)
@@ -433,12 +433,14 @@
                        smart_str_appendc(&soap_headers, ':');
                        smart_str_append_unsigned(&soap_headers, phpurl->port);
                }
-               if (http_1_1) {
+               if (!http_1_1 ||
+                       (zend_hash_find(Z_OBJPROP_P(this_ptr), "_keep_alive", 
sizeof("_keep_alive"), (void **)&tmp) == SUCCESS &&
+                        Z_LVAL_PP(tmp) == 0)) {
                        smart_str_append_const(&soap_headers, "\r\n"
-                               "Connection: Keep-Alive\r\n");
+                               "Connection: close\r\n");
                } else {
                        smart_str_append_const(&soap_headers, "\r\n"
-                               "Connection: close\r\n");
+                               "Connection: Keep-Alive\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) {

Modified: php/php-src/trunk/ext/soap/soap.c
===================================================================
--- php/php-src/trunk/ext/soap/soap.c   2011-11-18 13:13:38 UTC (rev 319471)
+++ php/php-src/trunk/ext/soap/soap.c   2011-11-18 13:24:35 UTC (rev 319472)
@@ -2469,6 +2469,11 @@
                    Z_TYPE_PP(tmp) == IS_STRING) {
                        add_property_stringl(this_ptr, "_user_agent", 
Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1);
                }
+
+               if (zend_hash_find(ht, "keep_alive", sizeof("keep_alive"), 
(void**)&tmp) == SUCCESS &&
+                               (Z_TYPE_PP(tmp) == IS_BOOL || Z_TYPE_PP(tmp) == 
IS_LONG) && Z_LVAL_PP(tmp) == 0) {
+                       add_property_long(this_ptr, "_keep_alive", 0);
+               }
        } else if (Z_TYPE_P(wsdl) == IS_NULL) {
                php_error_docref(NULL TSRMLS_CC, E_ERROR, "'location' and 'uri' 
options are required in nonWSDL mode");
        }

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

Reply via email to