In my multithreaded HTTPS server application running on Windows 2000,
SSL_accept() occasionally returns -1 and SSL_get_error() returns
SSL_ERROR_SYSCALL when there are many simultaneous connections. A rough
figure is about 1 SSL_ERROR_SYSCALL in every 100 SSL_accept(). Neither the
preceding calls to accept() or SSL_set_fd() indicate any error with the
socket.

I have already followed the FAQ and provided the two callback functions
required by OpenSSL to operate in multithreaded applications. My
implementation is based on those found in crypto\threads\mttest.c

The many simultaneous connections I referred to earlier is generated by
browsing an HTML page which has over 30 images, external JavaScript and
stylesheets using IE 6. After IE has parsed the HTML page, it will fetch
some of those external files simultaneously.

The Solaris 8 version of my application have the same problem too although
it happens less frequently. Instead of returning -1, SSL_accept() returns
0 but SSL_get_error() also returns SSL_ERROR_SYSCALL.

Adding to the complication is the fact that the architecture of the
Solaris version of my application is slightly different as it fork()s
instead of creating a thread to handle the incoming connection after
accept() is successful.

I am using OpenSSL 0.9.6l and blocking sockets and not BIO. Is there
anything I can do to figure out what's wrong? My application doesn't crash
but I just get occasional SSL_ERROR_SYSCALL from SSL_accept() when there
are many simultaneous connections from IE.


Michael Lee


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to