Hi,
    I am using OpenSSL-1.0.0d (release) + all cumulative bug fixes +
DTLS Heartbeat feature patch on Windows.

A DTLS server (non-blocking) using DTLSv1_Listen having a UDP socket
with SO_REUSEADDR is unable to accept a second client connection when
it is already accepted a client connection and serving it.

Details:

Server                                    Client 1
       State

DTLSv1_Listen                       Handshake complete          Established
                                             Client 2
           State
                                             Keeps sending CLIENT
HELLO  but Server never responds with HelloVerify request
                                             and select never gets
triggered on the listen fd (used by DTLSv1_listen)

As per some of the windows documents for connect, see excerpt below:

http://msdn.microsoft.com/en-us/library/ms737625%28v=vs.85%29.aspx

"For a connectionless socket (for example, type SOCK_DGRAM), the
operation performed by connect is merely to establish a default
destination address that can be used on subsequent send/ WSASend and
recv/ WSARecv calls. Any datagrams received from an address other than
the destination address specified will be discarded."

So it appears that once a socket is connected to a client, it will no
longer be used for accepting second client.

It has been observed, that when the first client connection is
released (terminated) a new client connection is accepted.

This is not a problem on Linux.

Is there any workarounds or special handling for windows ?

Thanks,
-Yogi
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to