[omniORB] Failure to connect on Windows 2008 Server

Duncan Grisby duncan at grisby.org
Fri Aug 28 11:36:38 BST 2009


On Wednesday 26 August, Mike Richmond wrote:

> I'm seeing a problem whereby tcpAddress::Connect() fails because
> getpeername() fails with error 10057 (WSAENOTCONN).  This is after
> connect() has returned 10035 (WSAEWOULDBLOCK) and select() has
> returned 1.  I see the error when using omniORB 4.1.3, but not with
> omniORB 4.1.0.

omniORB 4.1.0 didn't do the getpeername() check -- it just assumed that
when the select() returned, the socket was connected, which isn't always
the case.

> Also I am only seeing this problem on one machine, which is running
> Windows 2008 Server.  Another Windows 2008 Server machine is OK, as
> are machines with other Windows OSes.  A possibly significant
> property of the problem machine is that it has a 6to4 IPv6 address,
> which AIUI Windows assigns because the machine has a public IPv4
> address.  Might that be causing the problem?  Any thoughts on a fix?

What happens if you modify the code to retry the select() and
subsequent getpeername() if you get WSAENOTCONN?  That will be wrong if
the connection fails, but it will tell us if the error is a transient
thing or whether it's permanently failed.

Cheers,

Duncan.

-- 
 -- Duncan Grisby         --
  -- duncan at grisby.org     --
   -- http://www.grisby.org --



More information about the omniORB-list mailing list