X-Git-Url: https://www.bearssl.org/gitweb//home/git/?p=BearSSL;a=blobdiff_plain;f=src%2Fssl%2Fssl_engine.c;h=32bc406269151d1e839d7da1c622a1a6c606e93f;hp=8af773d55e444fcdf60acc98888a4d13b88ba648;hb=e61ad42191511226309bad2cbde8cd9e8cc743cb;hpb=3210f38e0491b39aec1ef419cb4114e9483089fb diff --git a/src/ssl/ssl_engine.c b/src/ssl/ssl_engine.c index 8af773d..32bc406 100644 --- a/src/ssl/ssl_engine.c +++ b/src/ssl/ssl_engine.c @@ -880,6 +880,12 @@ sendpld_ack(br_ssl_engine_context *rc, size_t len) } rc->oxa += len; if (rc->oxa >= rc->oxb) { + /* + * Set oxb to one more than oxa so that sendpld_flush() + * does not mistakingly believe that a record is + * already prepared and being sent. + */ + rc->oxb = rc->oxa + 1; sendpld_flush(rc, 0); } } @@ -1233,7 +1239,9 @@ br_ssl_engine_close(br_ssl_engine_context *cc) int br_ssl_engine_renegotiate(br_ssl_engine_context *cc) { - if (br_ssl_engine_closed(cc) || cc->reneg == 1) { + if (br_ssl_engine_closed(cc) || cc->reneg == 1 + || (cc->flags & BR_OPT_NO_RENEGOTIATION) != 0) + { return 0; } jump_handshake(cc, 2);