> 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]

Reply via email to