mirror of
https://github.com/openssl/openssl.git
synced 2025-01-30 14:01:55 +08:00
Make sure we remember how much data we sent in the event of a retry
If a retry occurs we need to reset s->rlayer.wnum so that next time around we remember how much data we already sent. Reviewed-by: Hugo Landau <hlandau@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22473)
This commit is contained in:
parent
86e11b1e78
commit
b9b9f4886f
@ -294,8 +294,10 @@ int ssl3_write_bytes(SSL *ssl, uint8_t type, const void *buf_, size_t len,
|
||||
/* Retry needed */
|
||||
i = HANDLE_RLAYER_WRITE_RETURN(s,
|
||||
s->rlayer.wrlmethod->retry_write_records(s->rlayer.wrl));
|
||||
if (i <= 0)
|
||||
if (i <= 0) {
|
||||
s->rlayer.wnum = tot;
|
||||
return i;
|
||||
}
|
||||
tot += s->rlayer.wpend_tot;
|
||||
s->rlayer.wpend_tot = 0;
|
||||
} /* else no retry required */
|
||||
@ -321,6 +323,7 @@ int ssl3_write_bytes(SSL *ssl, uint8_t type, const void *buf_, size_t len,
|
||||
i = ssl->method->ssl_dispatch_alert(ssl);
|
||||
if (i <= 0) {
|
||||
/* SSLfatal() already called if appropriate */
|
||||
s->rlayer.wnum = tot;
|
||||
return i;
|
||||
}
|
||||
/* if it went, fall through and send more stuff */
|
||||
|
Loading…
Reference in New Issue
Block a user