diff options
author | Gustavo Lopes <glopes@nebm.ist.utl.pt> | 2013-02-24 03:40:22 +0100 |
---|---|---|
committer | Gustavo Lopes <glopes@nebm.ist.utl.pt> | 2013-02-24 03:50:38 +0100 |
commit | 59ec22b370a74e9af62fdea68550feade6f36c81 (patch) | |
tree | fd7971316d30d0c3092681e5cf2eb8adbb0e6663 | |
parent | 189fbfd53b087099689b9198407ee0c50b17fc61 (diff) | |
download | php-git-59ec22b370a74e9af62fdea68550feade6f36c81.tar.gz |
sendrecvmsg_shutdown function moved to mshutdown
The function php_socket_sendrecvmsg_shutdown() should have been called in
MSHUTDOWN, not RSHUTDOWN.
Bug only on TSRM builds.
Should fix bug #64287.
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/sockets/sockets.c | 28 |
2 files changed, 23 insertions, 9 deletions
@@ -6,6 +6,10 @@ PHP NEWS . Fixed bug #49348 (Uninitialized ++$foo->bar; does not cause a notice). (Stas) +- Sockets: + . Fixed bug #64287 (sendmsg/recvmsg shutdown handler causes segfault). + (Gustavo) + 21 Feb 2013, PHP 5.5.0 Alpha 5 - Core: diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index 5ecc014596..f305fa07d8 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -69,7 +69,6 @@ #include "sendrecvmsg.h" ZEND_DECLARE_MODULE_GLOBALS(sockets) -static PHP_GINIT_FUNCTION(sockets); #ifndef MSG_WAITALL #ifdef LINUX @@ -271,9 +270,11 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_socket_cmsg_space, 0, 0, 2) ZEND_END_ARG_INFO() /* }}} */ -PHP_MINIT_FUNCTION(sockets); -PHP_MINFO_FUNCTION(sockets); -PHP_RSHUTDOWN_FUNCTION(sockets); +static PHP_GINIT_FUNCTION(sockets); +static PHP_MINIT_FUNCTION(sockets); +static PHP_MSHUTDOWN_FUNCTION(sockets); +static PHP_MINFO_FUNCTION(sockets); +static PHP_RSHUTDOWN_FUNCTION(sockets); PHP_FUNCTION(socket_select); PHP_FUNCTION(socket_create_listen); @@ -356,7 +357,7 @@ zend_module_entry sockets_module_entry = { "sockets", sockets_functions, PHP_MINIT(sockets), - NULL, + PHP_MSHUTDOWN(sockets), NULL, PHP_RSHUTDOWN(sockets), PHP_MINFO(sockets), @@ -607,7 +608,7 @@ static PHP_GINIT_FUNCTION(sockets) /* {{{ PHP_MINIT_FUNCTION */ -PHP_MINIT_FUNCTION(sockets) +static PHP_MINIT_FUNCTION(sockets) { le_socket = zend_register_list_destructors_ex(php_destroy_socket, NULL, le_socket_name, module_number); @@ -728,9 +729,19 @@ PHP_MINIT_FUNCTION(sockets) } /* }}} */ +/* {{{ PHP_MSHUTDOWN_FUNCTION + */ +static PHP_MSHUTDOWN_FUNCTION(sockets) +{ + php_socket_sendrecvmsg_shutdown(SHUTDOWN_FUNC_ARGS_PASSTHRU); + + return SUCCESS; +} +/* }}} */ + /* {{{ PHP_MINFO_FUNCTION */ -PHP_MINFO_FUNCTION(sockets) +static PHP_MINFO_FUNCTION(sockets) { php_info_print_table_start(); php_info_print_table_row(2, "Sockets Support", "enabled"); @@ -739,13 +750,12 @@ PHP_MINFO_FUNCTION(sockets) /* }}} */ /* {{{ PHP_RSHUTDOWN_FUNCTION */ -PHP_RSHUTDOWN_FUNCTION(sockets) +static PHP_RSHUTDOWN_FUNCTION(sockets) { if (SOCKETS_G(strerror_buf)) { efree(SOCKETS_G(strerror_buf)); SOCKETS_G(strerror_buf) = NULL; } - php_socket_sendrecvmsg_shutdown(SHUTDOWN_FUNC_ARGS_PASSTHRU); return SUCCESS; } |