diff options
| author | Jakub Zelenka <bukka@php.net> | 2019-01-25 14:16:08 +0000 |
|---|---|---|
| committer | Jakub Zelenka <bukka@php.net> | 2019-01-25 14:16:08 +0000 |
| commit | 0da13086bd6be6b2723236876dc37acd97c06a23 (patch) | |
| tree | ecc50ef446a53552e5246e1a420be3ddd689c553 /ext/openssl/xp_ssl.c | |
| parent | f78e681428a368930860162a1ea9b23b1a07666f (diff) | |
| parent | dc2ffdeed7d5c17eeb4f706f530eccafb425f92a (diff) | |
| download | php-git-0da13086bd6be6b2723236876dc37acd97c06a23.tar.gz | |
Merge branch 'PHP-7.2' into PHP-7.3
Diffstat (limited to 'ext/openssl/xp_ssl.c')
| -rw-r--r-- | ext/openssl/xp_ssl.c | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c index 11bea41295..8697d2d3b2 100644 --- a/ext/openssl/xp_ssl.c +++ b/ext/openssl/xp_ssl.c @@ -2453,30 +2453,22 @@ static int php_openssl_sockop_set_option(php_stream *stream, int option, int val alive = 0; } else if (php_pollfd_for(sslsock->s.socket, PHP_POLLREADABLE|POLLPRI, &tv) > 0) { if (sslsock->ssl_active) { - int n; - - do { - n = SSL_peek(sslsock->ssl_handle, &buf, sizeof(buf)); - if (n <= 0) { - int err = SSL_get_error(sslsock->ssl_handle, n); - - if (err == SSL_ERROR_SYSCALL) { + int n = SSL_peek(sslsock->ssl_handle, &buf, sizeof(buf)); + if (n <= 0) { + int err = SSL_get_error(sslsock->ssl_handle, n); + switch (err) { + case SSL_ERROR_SYSCALL: alive = php_socket_errno() == EAGAIN; break; - } - - if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) { - /* re-negotiate */ - continue; - } - - /* any other problem is a fatal error */ - alive = 0; + case SSL_ERROR_WANT_READ: + case SSL_ERROR_WANT_WRITE: + alive = 1; + break; + default: + /* any other problem is a fatal error */ + alive = 0; } - /* either peek succeeded or there was an error; we - * have set the alive flag appropriately */ - break; - } while (1); + } } else if (0 == recv(sslsock->s.socket, &buf, sizeof(buf), MSG_PEEK) && php_socket_errno() != EAGAIN) { alive = 0; } |
