svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/openssl/xp_ssl.c trunk/ext/openssl/xp_ssl.c
| From: | Pierre Joye | Date: | Sun, 20 Jun 2010 16:33:16 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/openssl/xp_ssl.c trunk/ext/openssl/xp_ssl.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-62936@lists.php.net to get a copy of this message | ||
pajoye Sun, 20 Jun 2010 16:33:16 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=300617
Log:
- #45808, stream_socket_enable_crypto() blocks and eats CPU
Bug: http://bugs.php.net/45808 (Assigned) [PATCH]
stream_socket_enable_crypto() blocks and eats CPU
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/ext/openssl/xp_ssl.c
U php/php-src/trunk/ext/openssl/xp_ssl.c
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2010-06-20 15:37:27 UTC (rev 300616)
+++ php/php-src/branches/PHP_5_3/NEWS 2010-06-20 16:33:16 UTC (rev 300617)
@@ -79,6 +79,8 @@
requests (Fixes CVE-2010-0397, bug #51288). (Raphael Geissert)
- Fixed 64-bit integer overflow in mhash_keygen_s2k(). (Clément LECIGNE, Stas)
+- Fixed bug #45808 (stream_socket_enable_crypto() blocks and eats CPU).
+ (vincent at optilian dot com)
- Fixed bug #52101 (dns_get_record() garbage in 'ipv6' field on Windows).
(Pierre)
- Fixed bug #52082 (character_set_client & character_set_connection reset after
Modified: php/php-src/branches/PHP_5_3/ext/openssl/xp_ssl.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/openssl/xp_ssl.c 2010-06-20 15:37:27 UTC (rev 300616)
+++ php/php-src/branches/PHP_5_3/ext/openssl/xp_ssl.c 2010-06-20 16:33:16 UTC (rev 300617)
@@ -312,8 +312,12 @@
SSL_METHOD *method;
if (sslsock->ssl_handle) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSL/TLS already set-up for this stream");
- return -1;
+ if (sslsock->s.is_blocked) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSL/TLS already set-up for this stream");
+ return -1;
+ } else {
+ return 0;
+ }
}
/* need to do slightly different things, based on client/server method,
@@ -435,7 +439,8 @@
}
if (n <= 0) {
- retry = handle_ssl_error(stream, n, 1 TSRMLS_CC);
+ retry = handle_ssl_error(stream, n, sslsock->is_client || sslsock->s.is_blocked
TSRMLS_CC);
+
} else {
break;
}
Modified: php/php-src/trunk/ext/openssl/xp_ssl.c
===================================================================
--- php/php-src/trunk/ext/openssl/xp_ssl.c 2010-06-20 15:37:27 UTC (rev 300616)
+++ php/php-src/trunk/ext/openssl/xp_ssl.c 2010-06-20 16:33:16 UTC (rev 300617)
@@ -312,8 +312,12 @@
SSL_METHOD *method;
if (sslsock->ssl_handle) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSL/TLS already set-up for this stream");
- return -1;
+ if (sslsock->s.is_blocked) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "SSL/TLS already set-up for this stream");
+ return -1;
+ } else {
+ return 0;
+ }
}
/* need to do slightly different things, based on client/server method,
@@ -435,7 +439,8 @@
}
if (n <= 0) {
- retry = handle_ssl_error(stream, n, 1 TSRMLS_CC);
+ retry = handle_ssl_error(stream, n, sslsock->is_client || sslsock->s.is_blocked
TSRMLS_CC);
+
} else {
break;
}