Re: multiple connect on a socket

Vasisht Tadigotla (vasisht@eden.rutgers.edu)
Wed, 7 Aug 2002 00:37:09 -0400 (EDT)


>
> > Shouldn't it throw an error when I
> > try to connect to it a second time ? Am I missing something here.
>
> Yes, it used to return success once upon connection is complete.
>
> When the connection is in progress, it returns EALREADY,
> after this it returns EISCONN, but success is indicated when it goes
> from unconnected to connected state. Maybe, this is wrong but it used
> to work in this way.

since O_NONBLOCK is set for the socket fd, the initial connect will fail
with an EINPROGRESS, and the connection request is established
asynchronously. If there is another connect during this period before the
connection is established, as you said it returns EALREADY. This is after
the connection is established and I read data from the socket. Since the
connection is already established, a further connect attempt should return
EISCONN. This is the behaviour on SunOS and IRIX.

On Linux if I attempt to connect to the same socket after the connection
has been established, connect() returns 0. I'm not sure if this is the
correct behaviour.

thanks,

vasisht

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/