1--TEST-- 2socket_export_stream: effects of closing 3--SKIPIF-- 4<?php 5if (!extension_loaded('sockets')) { 6 die('SKIP sockets extension not available.'); 7} 8if(substr(PHP_OS, 0, 3) != 'WIN' ) { 9 die("skip Not Valid for Linux"); 10} 11--FILE-- 12<?php 13 14function test($stream, $sock) { 15 if ($stream !== null) { 16 echo "stream_set_blocking "; 17 print_r(stream_set_blocking($stream, 0)); 18 echo "\n"; 19 } 20 if ($sock !== null) { 21 echo "socket_set_block "; 22 print_r(socket_set_block($sock)); 23 echo "\n"; 24 echo "socket_get_option "; 25 print_r(socket_get_option($sock, SOL_SOCKET, SO_TYPE)); 26 echo "\n"; 27 } 28 echo "\n"; 29} 30 31echo "normal\n"; 32$sock0 = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 33socket_bind($sock0, '0.0.0.0', 0); 34$stream0 = socket_export_stream($sock0); 35test($stream0, $sock0); 36 37echo "\nunset stream\n"; 38$sock1 = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 39socket_bind($sock1, '0.0.0.0', 0); 40$stream1 = socket_export_stream($sock1); 41unset($stream1); 42test(null, $sock1); 43 44echo "\nunset socket\n"; 45$sock2 = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 46socket_bind($sock2, '0.0.0.0', 0); 47$stream2 = socket_export_stream($sock2); 48unset($sock2); 49test($stream2, null); 50 51echo "\nclose stream\n"; 52$sock3 = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 53socket_bind($sock3, '0.0.0.0', 0); 54$stream3 = socket_export_stream($sock3); 55fclose($stream3); 56test($stream3, $sock3); 57 58echo "\nclose socket\n"; 59$sock4 = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 60socket_bind($sock4, '0.0.0.0', 0); 61$stream4 = socket_export_stream($sock4); 62socket_close($sock4); 63test($stream4, $sock4); 64 65echo "Done.\n"; 66--EXPECTF-- 67normal 68stream_set_blocking 1 69socket_set_block 1 70socket_get_option 2 71 72 73unset stream 74socket_set_block 1 75socket_get_option 2 76 77 78unset socket 79stream_set_blocking 1 80 81 82close stream 83stream_set_blocking 84Warning: stream_set_blocking(): supplied resource is not a valid stream resource in %s on line %d 85 86socket_set_block 87Warning: socket_set_block(): unable to set blocking mode [%d]: An operation was attempted on something that is not a socket. 88 in %s on line %d 89 90socket_get_option 91Warning: socket_get_option(): unable to retrieve socket option [%d]: An operation was attempted on something that is not a socket. 92 in %s on line %d 93 94 95 96close socket 97stream_set_blocking 98Warning: stream_set_blocking(): supplied resource is not a valid stream resource in %s on line %d 99 100socket_set_block 101Warning: socket_set_block(): supplied resource is not a valid Socket resource in %s on line %d 102 103socket_get_option 104Warning: socket_get_option(): supplied resource is not a valid Socket resource in %s on line %d 105 106 107Done. 108