#43782 [Opn->Csd]: feof() does not detect timeout on socket

[email protected]
Newsgroups php.bugs
Message-ID <[email protected]>
 ID:               43782
 Updated by:       [email protected]
 Reported By:      ml at foofree dot sk
-Status:           Open
+Status:           Closed
 Bug Type:         Streams related
 Operating System: *
 PHP Version:      5.2,5.3CVS (2008-07-15)
-Assigned To:      
+Assigned To:      dsp
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------

[2008-01-08 01:19:23] ml at foofree dot sk

Description:
------------
From docs:

"Returns TRUE if the file pointer is at EOF or an error occurs
(including socket timeout); otherwise returns FALSE."

...

"If a connection opened by fsockopen() wasn't closed by the server,
feof() will wait until a timeout has been reached to return TRUE. The
default timeout value is 60 seconds. You may use stream_set_timeout() to
change this value."



feof() dows not wait and returns TRUE instead of FALSE if timeout
reached (server does not closed connection and there is no data in
timeout time slot).

* server does not closed connection,
* timeout wa reached

Reproduce code:
---------------
$s = stream_socket_client('tcp://www.php.net:80', $errno, $errstr, 10,
STREAM_CLIENT_CONNECT);

stream_set_timeout($s, 4);

$response = '';
while (feof($s) !== TRUE) {

   if (($foo = @fread($s, 1024 * 8)) === FALSE) return NULL;
   $response = $response . $foo;
};

print "OK";

Expected result:
----------------
prints "OK" approx. in 4 seconds

Actual result:
--------------
hangs forever


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


-- 
Edit this bug report at http://bugs.php.net/?id=43782&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.