> Perhaps the backtracking to reprocess the event as data involves a > second blocking socket read() in ssl3_read_bytes(). I am not familiar > with the details of this code. What I am curious about is when does > this happen. What is it exactly that the server is doing here, why, > and is it legal?
Did you see the -debug -msg output I posted before? Basically the server sits in select(), when a socket becomes readable it starts a renegotiation int ret = SSL_renegotiate(p_ssl); .. ret = SSL_do_handshake(p_ssl); then immediately reads the data from the socket and writes back a response. The server is built using the same version of OpenSSL (0.9.8a). So the question is whether it is legal for the server to send data while renegotiation is in progress? I don't know... but as far as I can tell I'm not doing anything illegal as an application programmer. I don't think I'm supposed to wait for rehandshake to finish (it doesn't even have to happen as far as I understand). The socket on the server is blocking (don't tell David!) I hope I'm answering your question. I've looked at the ssl3_read_internal() code a couple of times but there is no way I can understand it without spending at least half a day, preferrably with a debugger, and I didn't have time to do that. I can probably build a simple server to reproduce the problem. Should I? ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager [EMAIL PROTECTED]