On Thu, Nov 6, 2008 at 9:11 PM, David Schwartz <[EMAIL PROTECTED]> wrote:
> > > There needs to be a call to fcntl(fd,F_SETFL,O_NONBLOCK) just after > > the socket() call and error status check. > > That will just waste CPU. The code will spin in each loop "while > (!success)" loop until it gets what it wants. It will still not return any > time soon, but will do so at 100% CPU instead of 0% CPU. > > Unless I'm missing something. > > It looks like the default error handler will catch EWOULDBLOCK and "goto err", breaking out of the while() loop. If EWOULDBLOCK happened during connect() then "0" is returned, If it happens during read() or write() then -1 is returned. Is this an important discrepancy? Ben