From: [EMAIL PROTECTED] Operating system: Windows 2000 PHP version: 4.3.0 PHP Bug Type: Sockets related Bug description: PHP_NORMAL_READ parameter in socket_read function gives error
<?php error_reporting (E_ALL); /* Allow the script to hang around waiting for connections. */ set_time_limit (0); /* Turn on implicit output flushing so we see what we're getting * as it comes in. */ ob_implicit_flush (); $address = '190.23.198.28'; $port = 10000; if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) < 0) { echo "socket_create() failed: reason: " . socket_strerror ($sock) . "\n"; } if (($ret = socket_bind ($sock, $address, $port)) < 0) { echo "socket_bind() failed: reason: " . socket_strerror ($ret) . "\n"; } if (($ret = socket_listen ($sock, 5)) < 0) { echo "socket_listen() failed: reason: " . socket_strerror ($ret) . "\n"; } do { if (($msgsock = socket_accept($sock)) < 0) { echo "socket_accept() failed: reason: " . socket_strerror ($msgsock) . "\n"; break; } /* Send instructions. */ $msg = "\nWelcome to the PHP Test Server. \n" . "To quit, type 'quit'. To shut down the server type 'shutdown'.\n"; socket_write($msgsock, $msg, strlen($msg)); do { if (FALSE === ($buf = socket_read ($msgsock, 2048, PHP_NORMAL_READ))) { echo "socket_read() failed: reason: " . socket_strerror ($ret) . "\n"; break 2; } /* while(($tmpbuf = socket_read($msgsock, 512)) !== false) { $buf .= $tmpbuf; if(preg_match("'\r\n\r\n$'s", $buf)) break; } */ if (!$buf = trim ($buf)) { continue; } if ($buf == 'quit') { break; } if ($buf == 'shutdown') { socket_close ($msgsock); break 2; } $talkback = "PHP: You said '$buf'.\n"; socket_write ($msgsock, $talkback, strlen ($talkback)); echo "$buf\n"; } while (true); socket_close ($msgsock); } while (true); socket_close ($sock); ?> this socket example script dies when ran from command line. but only if i use PHP_NORMAL_READ parameter in socket_read function. it gives this error: PHP Warning: socket_read() unable to read from socket [0]: The operation comple ted successfully. in C:\php43\serv.php on line 38 socket_read() failed: reason: Incorrect function. if PHP_NORMAL_READ parameter isn't used, it works beautifully. -- Edit bug report at http://bugs.php.net/?id=21409&edit=1 -- Try a CVS snapshot: http://bugs.php.net/fix.php?id=21409&r=trysnapshot Fixed in CVS: http://bugs.php.net/fix.php?id=21409&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=21409&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=21409&r=needtrace Try newer version: http://bugs.php.net/fix.php?id=21409&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=21409&r=support Expected behavior: http://bugs.php.net/fix.php?id=21409&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=21409&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=21409&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=21409&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=21409&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=21409&r=dst IIS Stability: http://bugs.php.net/fix.php?id=21409&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=21409&r=gnused