summaryrefslogtreecommitdiff
path: root/main/network.c
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2002-03-16 14:39:51 +0000
committerWez Furlong <wez@php.net>2002-03-16 14:39:51 +0000
commitbed04279c3f8ef7dbb3aa0c0543d50f72248cb2c (patch)
tree7db0b1720fc4d859b4cc95e9ab6af672c7b78cb1 /main/network.c
parent6abd7c6f93c4ec981219745ac8882d99741fe50b (diff)
downloadphp-git-bed04279c3f8ef7dbb3aa0c0543d50f72248cb2c.tar.gz
Hopefully fix resource usage so that we have no leaks and don't segfault.
Diffstat (limited to 'main/network.c')
-rw-r--r--main/network.c22
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));