mirror of
https://github.com/openssl/openssl.git
synced 2025-03-25 20:00:44 +08:00
Ensure async IO works with new state machine
In the new state machine if using nbio and we get the header of a handshake message is one record with the body in the next, with an nbio event in the middle, then the connection was failing. This is because s->init_num was getting reset. We should only reset it after we have read the whole message. RT#4394 Reviewed-by: Andy Polyakov <appro@openssl.org>
This commit is contained in:
parent
1257adecd4
commit
1689e7e688
@ -500,7 +500,6 @@ static SUB_STATE_RETURN read_state_machine(SSL *s) {
|
||||
while(1) {
|
||||
switch(st->read_state) {
|
||||
case READ_STATE_HEADER:
|
||||
s->init_num = 0;
|
||||
/* Get the state the peer wants to move to */
|
||||
if (SSL_IS_DTLS(s)) {
|
||||
/*
|
||||
@ -559,6 +558,10 @@ static SUB_STATE_RETURN read_state_machine(SSL *s) {
|
||||
return SUB_STATE_ERROR;
|
||||
}
|
||||
ret = process_message(s, &pkt);
|
||||
|
||||
/* Discard the packet data */
|
||||
s->init_num = 0;
|
||||
|
||||
if (ret == MSG_PROCESS_ERROR) {
|
||||
return SUB_STATE_ERROR;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user