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

Reply via email to