I watched it fail on a FreeBSD machine. For an example of code that uses a non-blocking accept:
http://www.cs.odu.edu/~cs779/stevens2nd/lib/connect_nonb.c Ryan On Monday 06 August 2001 14:48, Jeff Trawick wrote: > Ryan Bloom <[EMAIL PROTECTED]> writes: > > The problem is that the second connect() call is failing with an > > EALREADYCONNECTED. The correct way to detect an error from connect, > > according to Single Unix, is to do a poll or select. If select/poll > > return with an error or they timeout, the connect failed. If they return > > successfully, then the connect has succeeded. > > On what platform is it failing with EALREADYCONNECTED? I can't > readily reproduce this problem. (not disagreeing, just would like to > play with it myself) > > A patch to look for an error in a different manner must retrieve the > saved error from TCP. You gotta get the ECONNREFUSED or ENETUNREACH > back to the app. > > (Actually, when I did this code I did look around for examples. > I guess I looked at a bad one :) ) > > By the way... Stevens doesn't check for exception on the socket, just > readability and writability, then he calls getsockopt(,SOL_SOCKET, > SO_ERROR,) to retrieve the saved error from TCP.) -- _____________________________________________________________________________ Ryan Bloom [EMAIL PROTECTED] Covalent Technologies [EMAIL PROTECTED] -----------------------------------------------------------------------------
