I've been using IE, Chrome and Firefox as clients for a test SSL/TLS server.  
This works fine with Firefox, which uses a single TCP connection for the TLS 
handshake and subsequent communication.  However, IE and Chrome seem often to 
send different parts of the handshake on different TCP connections.  When this 
happens, the server fails.
 
As an example, IE may connect and send a ClientHello.  The server responds with 
a ServerHello on the same socket.  IE then replies with 
ClientExchange/ChangeCipherSpec/Finished, but not necessarily on the same 
socket.  Instead, IE may establish a brand new TCP connection and send the 
messages over that -- all while the server is expecting the messages on the 
original socket.  The server remains blocked on a recv() for that socket, 
waiting for data that will never come through it.
 
How does one deal with a handshake sent over multiple TCP connections?  It's 
not 
clear how to determine which connections are sending data for which handshakes, 
especially when many clients hit the server hard.  The server doesn't know 
whether to call recv() to receive handshake messages over the original 
connection, or to use accept()/recv() to take a new connection.  If a new 
connection does come, can we simply terminate the original one?
 
I might well be missing something here, or perhaps not correctly interpreting 
what I'm seeing in the debug spew.  Any help much appreciated.  Thanks,
 
Paul T. Lambert



______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to