ID: 28141 User updated by: php at richardneill dot org -Summary: sokcet_read return type: false vs "" Reported By: php at richardneill dot org Status: Open Bug Type: Sockets related Operating System: Linux PHP Version: 5.0.0RC1 New Comment:
This is still present in RC2 Previous Comments: ------------------------------------------------------------------------ [2004-04-25 06:56:24] php at richardneill dot org Description: ------------ According to the documentation, socket_read() can return: 1)A string - normal data 2)An empty string "" - the other end closed the connection 3)false - something went wrong. But it seems to be returning false on connection close. Reproduce code: --------------- $buffer=socket_read($socket,2048,PHP_NORMAL_READ); if ($buffer===false){ echo "Error: socket_read() failed: reason: ".socket_strerror(socket_last_error())." \n"; exit (1); }elseif ($buffer==''){ echo "Socket $socket returned an empty string. Closing connection\n"; socket_close($socket); }else{ echo "Received data".trim($buffer)."\n"; } Expected result: ---------------- I'm using netcat as a client, and then killing the netcat process with Ctrl-C to simulate remote host disconnecting. I expect to see the socket close. Actual result: -------------- Actually, the php script exits, because socket_read returns false instead of "". This may be a bug in the documentation for socket_read, rather than in its behaviour. Thanks for your help - Richard ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28141&edit=1