> 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 [email protected]
Automated List Manager [EMAIL PROTECTED]