svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/ext/soap/php_http.c branches/PHP_5_4/ext/soap/soap.c trunk/ext/soap/php_http.c
trunk/ext/soap/soap.c
| From: | Pierrick Charron | Date: | Fri, 18 Nov 2011 13:24:35 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_4/NEWS branches/PHP_5_4/ext/soap/php_http.c branches/PHP_5_4/ext/soap/soap.c trunk/ext/soap/php_http.c trunk/ext/soap/soap.c |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-67035@lists.php.net to get a copy of this message | ||
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");
}