--TEST-- stream_socket_server() SO_REUSEADDR context option test --FILE-- ['so_reuseaddr' => false]]); $server3 = stream_socket_server("tcp://127.0.0.1:0", $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $context); if (!$server3) { die('Unable to create server3'); } $addr = stream_socket_get_name($server3, false); $port = (int)substr(strrchr($addr, ':'), 1); $client3 = stream_socket_client("tcp://127.0.0.1:$port"); $accepted = stream_socket_accept($server3, 1); // Force real TCP connection with data fwrite($client3, "test"); fread($accepted, 4); fwrite($accepted, "response"); fread($client3, 8); // Client closes first (becomes active closer) fclose($client3); // This enters TIME_WAIT if (!$is_win) { // Windows would always succeed if server is closed fclose($server3); } // Try immediate bind with SO_REUSEADDR disabled (should fail) $server4 = @stream_socket_server("tcp://127.0.0.1:$port", $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $context); if ($server4) { echo "Disabled: Server restart succeeded\n"; fclose($server4); } else { echo "Disabled: Server restart failed\n"; } ?> --EXPECT-- Default: Server restart succeeded Disabled: Server restart failed