@@ -9,39 +9,40 @@ use function Async\await_all;
99
1010echo "Start \n" ;
1111
12- $ ch = new Channel (1 );
12+ $ s2c = new Channel (1 ); // server -> client
13+ $ c2s = new Channel (1 ); // client -> server
1314
14- $ server = spawn (function () use ($ ch ) {
15+ $ server = spawn (function () use ($ s2c , $ c2s ) {
1516 $ socket = stream_socket_server ("tcp://127.0.0.1:0 " , $ errno , $ errstr );
1617 if (!$ socket ) {
1718 echo "Server: failed - $ errstr \n" ;
1819 return ;
1920 }
2021
2122 // Signal the address to the client
22- $ ch ->send (stream_socket_get_name ($ socket , false ));
23+ $ s2c ->send (stream_socket_get_name ($ socket , false ));
2324
2425 $ client = stream_socket_accept ($ socket , 5 );
2526 echo "Server: accepted \n" ;
2627
2728 // Signal that connection is established
28- $ ch ->send ("connected " );
29+ $ s2c ->send ("connected " );
2930
3031 // Wait for client to finish feof check
31- $ ch ->recv ();
32+ $ c2s ->recv ();
3233
3334 // Close client connection
3435 fclose ($ client );
3536 echo "Server: closed client \n" ;
3637
3738 // Signal that server closed the connection
38- $ ch ->send ("closed " );
39+ $ s2c ->send ("closed " );
3940
4041 fclose ($ socket );
4142});
4243
43- $ client = spawn (function () use ($ ch ) {
44- $ address = $ ch ->recv ();
44+ $ client = spawn (function () use ($ s2c , $ c2s ) {
45+ $ address = $ s2c ->recv ();
4546
4647 $ sock = stream_socket_client ("tcp:// $ address " , $ errno , $ errstr , 5 );
4748 if (!$ sock ) {
@@ -51,17 +52,17 @@ $client = spawn(function() use ($ch) {
5152 echo "Client: connected \n" ;
5253
5354 // Wait for server to confirm accept
54- $ ch ->recv ();
55+ $ s2c ->recv ();
5556
5657 // Socket is alive — feof() MUST return false
5758 $ eof = feof ($ sock );
5859 echo "feof on live socket: " . ($ eof ? "true (BUG!) " : "false " ) . "\n" ;
5960
6061 // Tell server it can close now
61- $ ch ->send ("done " );
62+ $ c2s ->send ("done " );
6263
6364 // Wait for server to confirm close
64- $ ch ->recv ();
65+ $ s2c ->recv ();
6566
6667 // Give TCP stack time to deliver FIN
6768 \Async \delay (1 );
@@ -78,11 +79,11 @@ await_all([$server, $client]);
7879echo "End \n" ;
7980
8081?>
81- --EXPECT --
82+ --EXPECTF --
8283Start
83- Server: accepted
84- Client: connected
84+ %AServer: accepted
85+ %AClient: connected
86+ %Afeof on live socket: false
8587Server: closed client
86- feof on live socket: false
8788feof after remote close: true
8889End
0 commit comments