Edit report at https://bugs.php.net/bug.php?id=64654&edit=1

 ID:                 64654
 Updated by:         larue...@php.net
 Reported by:        xilon dot jul at gmail dot com
 Summary:            socket_select returns false and socket_last_error
                     returns 0 (success)
 Status:             Open
 Type:               Bug
 Package:            Sockets related
 Operating System:   Linux 3.5.0-23-generic
 PHP Version:        5.4.14
 Block user comment: N
 Private report:     N

 New Comment:

I don't think this is a bug.

the warning is threw before do really "select", it is an error in php side. not 
system call side.

and socket_last_error is for the error in system call side.


Previous Comments:
------------------------------------------------------------------------
[2013-04-17 09:52:28] xilon dot jul at gmail dot com

Description:
------------
When a socket ressource previously watched for read I/O in socket_select is 
closed, the socket_select function would return false and throw a warning 
saying 
"Not a valid socket ressource".

The fact is that subsequent call to socket_last_error() returns 0 which 
translates 
to success using socket_strerror().


Test script:
---------------
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if (false === socket_bind($socket, '0.0.0.0', 5555)) {
        die('bind()');
}
$read[] = $socket;
// voluntarily close the socket
socket_close($socket);
// Will throw a warning and return false
$retval = socket_select($read, $w = null, $e = null, 1);
echo socket_last_error(); // returns 0


Expected result:
----------------
As the C select system call, closing the socket should return a valid system 
error 
code.

The C counterpart of this PHP sample above gives :

select(): Bad file descriptor (9 => EBADF)



Actual result:
--------------
The result of socket_last_error is 0.


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=64654&edit=1

Reply via email to