ID: 25939 Updated by: [EMAIL PROTECTED] Reported By: mlemos at acm dot org -Status: Open +Status: Verified Bug Type: Sockets related PHP Version: 4.3.4RC2
Previous Comments: ------------------------------------------------------------------------ [2003-10-21 15:45:32] mlemos at acm dot org Description: ------------ It seems that since the changes introduced after PHP 4.3.1, the feof function is no longer returning true when the server closes the socket connection after transmiting all the contents. This seems to make it impossible to determine if there was a real network error or the server closed the connection normally breaking the compatibility of scripts that rely on feof to determine the end of connection condition. Reproduce code: --------------- The following script demonstrates the change of behaviour. You should try it either PHP versions before and after PHP 4.3.2 to see the difference. <?php $socket=fsockopen("www.php.net",80,$error); if(!$socket) { echo "socket opening error\n"; exit; } echo "connection opened\n"; if(!fputs($socket,"GET / HTTP/1.1\r\nHost: www.php.net\r\n\r\n")) { echo "socket writing error\n"; exit; } while(!feof($socket)) { $data=fread($socket,1000); if(!$data) { echo "socket reading error\n"; exit; } echo "read ",strlen($data)," bytes\n"; } echo "reached the end of data\n"; fclose($socket); ?> Expected result: ---------------- connection opened read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 278 bytes reached the end of data Actual result: -------------- connection opened read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 1000 bytes read 278 bytes socket reading error ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=25939&edit=1