diff options
Diffstat (limited to 'main/network.c')
-rw-r--r-- | main/network.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/main/network.c b/main/network.c index dd877bbd1d..93e0f2bbce 100644 --- a/main/network.c +++ b/main/network.c @@ -675,22 +675,24 @@ static size_t php_sockop_read(php_stream *stream, char *buf, size_t count) return ret; } -static int php_sockop_close(php_stream *stream) +static int php_sockop_close(php_stream *stream, int close_handle) { php_netstream_data_t *sock = (php_netstream_data_t*)stream->abstract; + if (close_handle) { #if HAVE_OPENSSL_EXT - if (sock->ssl_active) { - SSL_shutdown(sock->ssl_handle); - sock->ssl_active = 0; - SSL_free(sock->ssl_handle); - sock->ssl_handle = NULL; - } + if (sock->ssl_active) { + SSL_shutdown(sock->ssl_handle); + sock->ssl_active = 0; + SSL_free(sock->ssl_handle); + sock->ssl_handle = NULL; + } #endif - - shutdown(sock->socket, 0); - closesocket(sock->socket); + shutdown(sock->socket, 0); + closesocket(sock->socket); + + } if (sock->readbuf) pefree(sock->readbuf, php_stream_is_persistent(stream)); |