Re: sockets problems & patch

From: Date: Sun, 09 Dec 2001 18:50:11 +0000
Subject: Re: sockets problems & patch
References: 1 2 3 4 5  Groups: php.dev 
Request: Send a blank email to php-dev+get-72960@lists.php.net to get a copy of this message
On Sun, Dec 09, 2001 at 07:42:46PM +0100, Sterling Hughes wrote: > > > > please send a unified diff. > > > > i'll look at integrating your changes then! > > > > The problem with the zip file he sent is also that a: > > ]$ diff -uN orig new > > produces a unified diff with almost all of it being whitespace > related, so its near impossible to view the changes... that's what i did;-) > > -Sterling > > > tc > > > > On Sat, Dec 08, 2001 at 08:20:56PM -0500, benjamin yates wrote: > > > > > > hey all... i've been using the sockets extension pretty extensively for > > > the past couple months, and it has some real problems. obviously the best > > > reason for it is the ability to use non-blocking sockets in php, which is > > > great for writing simple tcpip clients and services. i've done this with a > > > set of state-machines and it works very well. > > > > > > i had to change the code alot though before i could make it all work, > > > because of two issues. > > > > > > first, the library tracks socket errors with 'errno' which isn't > > > proper on > > > win32, where you must use WSAGetLastError() instead. that's a simple fix... > > > > > > the second has more changes. currently, the library stores the last error > > > only when socket calls return "error"-ish values. which is a problem > > > because the return value of the sockets calls is not what is returned to the > > > php script. this doesn't provide enough data for writing an app that uses > > > non-blocking sockets. > > > > > > example... socket_read() returns false if it didn't read anything. > > > > > > recv() returns the number of bytes read OR zero of the connection was > > > closed OR -1 if another error is in errno/WSAGetLastError. > > > > > > since socket_read only returns good or bad, you can't tell the specific > > > error without the socket_last_error being correct... > > > > > > i hope this makes sense to someone. the last time i built this and > > > patched it, i sent my changes from (at the time) the current CVS to the > > > authors in the sockets.c but never got any response - so now i'm posting it > > > here. > > > > > > i repatched the latest cvs snapshot, and i just tested it out on one of my > > > scripts and it's working fine for me. i don't know if it might break some > > > unix implementations - i think it will be fine. the code isn't the best, > > > because there are places where socket function calls are inside of if()'s, > > > and the last error must be stored, so instead of reorganize everything, i > > > just put multiple calls to my error storage macro where it was needed. i > > > don't know all the coding standards you go by so i didnt' want to spend > > > time > > > making a bunch of changes that wouldn't be wanted. > > > > > > i zipped my sockets.c and the original, taken from the latest cvs > > > snapshot - it's available at > > > > > > http://www.newnetwork.com/benjamin_sockets.zip > > > > > > thanks for looking at it... > > > > > > oh and i don't know why someone decided that the socket_last_error() > > > should clear the error when calling it, i can't think of any reason why... > > > and it means that i have to store it before i use it in a script, if i must > > > make multiple references to it. not a big deal but i just can't come up > > > with why it should be cleared. > > > > > > well perhaps someone thought it should be cleared before i decided that it > > > should be set after every call :) > > > > > > -benjamin > > > > > > -- > > > PHP Development Mailing List <\‚‘üTQ5x > > > åvz±�bhttp://www.php.net/> > > > To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net > > > For additional commands, e-mail: php-dev-help@lists.php.net > > > To contact the list administrators, e-mail: php-list-admin@lists.php.net > > > > > > > -- > > PHP Development Mailing List <http://www.php.net/> > > To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net > > For additional commands, e-mail: php-dev-help@lists.php.net > > To contact the list administrators, e-mail: php-list-admin@lists.php.net > > > > -- > PHP Development Mailing List <http://www.php.net/> > To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net > For additional commands, e-mail: php-dev-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net >

« previous php.dev (#72960) next »