ID: 8722
Updated by: jmoore
Reported By: [EMAIL PROTECTED]
Old-Status: Assigned
Status: Closed
Bug Type: Sockets related
Operating system:
PHP Version: 4.0.4pl1
Assigned To:
Comments:
This appears to be fixed in latest CVS. (I cant reproduce this with or without your
patch). Please try this with latest cvs and reopen if this is not the case.
- James
Previous Comments:
---------------------------------------------------------------------------
[2001-04-16 06:38:01] [EMAIL PROTECTED]
Ill test the patch and commit if it works well. It looks right to me.
-James
---------------------------------------------------------------------------
[2001-01-15 14:50:07] [EMAIL PROTECTED]
i have the following script:
$g_ssock=fsockopen($server,$port,$errno,$errstr,30);
socket_set_blocking($g_ssock,0);
while(!feof($g_ssock))
echo fgets($g_ssock,4096);
if you uncomment the socket_set_blocking line it will work fine on win32, but with non
blocking sockets, feof will always return true. by digging through the code, it
appears that fsock.c uses the errno() function for determining any socket error as
seen in function php_sockread_internal:
} else if(nr_bytes == 0 || (nr_bytes < 0 && errno != EWOULDBLOCK)) {
sock->eof = 1;
}
the problem is that win32 doesn't report socket errors with _errno() but with
WSAGetLastError() so here is my fix:
in fsock.c, line 46, replace:
#ifdef PHP_WIN32
#include <winsock.h>
#else
with:
#ifdef PHP_WIN32
#include <winsock.h>
#undef errno
#define errno (WSAGetLastError())
#else
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=8722&edit=2
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]