diff --git a/NEWS b/NEWS index 4dcac8bb21e4f..ca6b431d70cd8 100644 --- a/NEWS +++ b/NEWS @@ -145,6 +145,7 @@ PHP NEWS . Allowed filtered streams to be casted as fd for select. (Jakub Zelenka) . Fixed bug GH-21221 (Prevent closing of innerstream of php://temp stream). (ilutov) + . Improved stream_socket_server() bind failure error reporting. (ilutov) - Zip: . Fixed ZipArchive callback being called after executor has shut down. diff --git a/ext/standard/assert.c b/ext/standard/assert.c index a29d022b4ac47..501ea5508dd32 100644 --- a/ext/standard/assert.c +++ b/ext/standard/assert.c @@ -285,7 +285,6 @@ PHP_FUNCTION(assert_options) zend_string_release_ex(value_str, 0); } RETURN_LONG(oldint); - break; case PHP_ASSERT_BAIL: oldint = ASSERTG(bail); @@ -301,7 +300,6 @@ PHP_FUNCTION(assert_options) zend_string_release_ex(value_str, 0); } RETURN_LONG(oldint); - break; case PHP_ASSERT_WARNING: oldint = ASSERTG(warning); @@ -317,7 +315,6 @@ PHP_FUNCTION(assert_options) zend_string_release_ex(value_str, 0); } RETURN_LONG(oldint); - break; case PHP_ASSERT_CALLBACK: if (Z_TYPE(ASSERTG(callback)) != IS_UNDEF) { @@ -352,7 +349,6 @@ PHP_FUNCTION(assert_options) zend_string_release_ex(key, 0); } RETURN_LONG(oldint); - break; default: zend_argument_value_error(1, "must be an ASSERT_* constant"); diff --git a/ext/standard/tests/network/stream_socket_server_bind_error.phpt b/ext/standard/tests/network/stream_socket_server_bind_error.phpt new file mode 100644 index 0000000000000..2f5becb66a91d --- /dev/null +++ b/ext/standard/tests/network/stream_socket_server_bind_error.phpt @@ -0,0 +1,19 @@ +--TEST-- +stream_socket_server() bind error +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +Warning: stream_socket_server(): Unable to connect to tcp://0.0.0.0:%d (Address %r(already )?%rin use) in %s on line %d diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index c6f516e3a262c..04c3d671537ad 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -1416,12 +1416,10 @@ static void php_zip_entry_get_info(INTERNAL_FUNCTION_PARAMETERS, int opt) /* {{{ RETURN_STRING("imploded"); case 7: RETURN_STRING("tokenized"); - break; case 8: RETURN_STRING("deflated"); case 9: RETURN_STRING("deflatedX"); - break; case 10: RETURN_STRING("implodedX"); default: diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c index 9eae9e460e475..f21944313d32a 100644 --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@ -699,8 +699,13 @@ static inline int php_tcp_sockop_bind(php_stream *stream, php_netstream_data_t * parse_unix_address(xparam, &unix_addr); - return bind(sock->socket, (const struct sockaddr *)&unix_addr, + int result = bind(sock->socket, (const struct sockaddr *)&unix_addr, (socklen_t) XtOffsetOf(struct sockaddr_un, sun_path) + xparam->inputs.namelen); + if (result == -1 && xparam->want_errortext) { + char errstr[256]; + xparam->outputs.error_text = strpprintf(0, "%s", php_socket_strerror_s(errno, errstr, sizeof(errstr))); + } + return result; } #endif