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