summaryrefslogtreecommitdiff
path: root/ext/openssl/xp_ssl.c
diff options
context:
space:
mode:
authorJakub Zelenka <bukka@php.net>2017-03-14 18:47:51 +0000
committerJakub Zelenka <bukka@php.net>2017-03-14 18:47:51 +0000
commit117d6a9a14c28968485247fdbc53128e46b98ab3 (patch)
treeda0994a6740078618b0559c263ecee72f00e7665 /ext/openssl/xp_ssl.c
parent131fd3baa07b1cdec5fac0d46d59bfbbaf92d9a5 (diff)
parentb4f0174e5caded1aecfd5231dd84c02b4c6bbd91 (diff)
downloadphp-git-117d6a9a14c28968485247fdbc53128e46b98ab3.tar.gz
Merge branch 'PHP-7.1'
Diffstat (limited to 'ext/openssl/xp_ssl.c')
-rw-r--r--ext/openssl/xp_ssl.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
index 63934fe22a..65693c23c7 100644
--- a/ext/openssl/xp_ssl.c
+++ b/ext/openssl/xp_ssl.c
@@ -1627,21 +1627,8 @@ int php_openssl_setup_crypto(php_stream *stream,
}
#ifdef SSL_MODE_RELEASE_BUFFERS
- do {
- long mode = SSL_get_mode(sslsock->ssl_handle);
- SSL_set_mode(sslsock->ssl_handle, mode | SSL_MODE_RELEASE_BUFFERS);
- } while (0);
+ SSL_set_mode(sslsock->ssl_handle, SSL_get_mode(sslsock->ssl_handle) | SSL_MODE_RELEASE_BUFFERS);
#endif
-
- do {
- long mode = SSL_get_mode(sslsock->ssl_handle);
- SSL_set_mode(sslsock->ssl_handle, mode | SSL_MODE_ENABLE_PARTIAL_WRITE);
- } while (0);
-
- do {
- long mode = SSL_get_mode(sslsock->ssl_handle);
- SSL_set_mode(sslsock->ssl_handle, mode | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
- } while (0);
if (cparam->inputs.session) {
if (cparam->inputs.session->ops != &php_openssl_socket_ops) {
@@ -1776,6 +1763,16 @@ static int php_openssl_enable_crypto(php_stream *stream,
if (SUCCESS == php_set_sock_blocking(sslsock->s.socket, 0)) {
sslsock->s.is_blocked = 0;
+ /* The following mode are added only if we are able to change socket
+ * to non blocking mode which is also used for read and write */
+ SSL_set_mode(
+ sslsock->ssl_handle,
+ (
+ SSL_get_mode(sslsock->ssl_handle) |
+ SSL_MODE_ENABLE_PARTIAL_WRITE |
+ SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER
+ )
+ );
}
timeout = sslsock->is_client ? &sslsock->connect_timeout : &sslsock->s.timeout;