I have a server that implements secure communication using OpenSSL.  The server 
does a listen() on a port and keeps track of what listens are secure/SSL 
listens.  When a peer opens to that IP addr/port, the server sees that it's for 
a secure connection and then makes the calls to set up SSL information for the 
socket:
 
   // error checking and extraneous code removed
    sock = accept(listen_sock, (struct sockaddr*)&sa_cli, &client_len);
    SSL_bio = BIO_new(BIO_s_socket()); 
    SSL_obj = SSL_new(SSL_ctx);
    BIO_set_fd(SSL_bio,sock,BIO_NOCLOSE);
    SSL_set_bio(SSL_obj, SSL_bio, SSL_bio);
    SSL_set_verify(SSL_obj,SSL_VERIFY_NONE,verify_callback);
    SSL_set_accept_state(SSL_obj);

At that point, the server should be waiting for the ClientHello, and will use 
SSL_read/write to perform the handshake.
 
Let's say the client/peer never sends in the ClientHello.  In other words, the 
client probably called connect() but not SSL_connect() or some similar scenario.
 
Does OpenSSL eventually time out this connection and abort it somehow?  Are 
there OpenSSL API calls the server should be using to ensure it does get timed 
out?  Or is this something the server application should keep track of and 
handle on it's own?
 
Thanks in advance.
                                          

Reply via email to