diff --git a/src/ssl/ssl_io.c b/src/ssl/ssl_io.c index ed88c89..5bad81b 100644 --- a/src/ssl/ssl_io.c +++ b/src/ssl/ssl_io.c @@ -121,13 +121,14 @@ run_until(br_sslio_context *ctx, unsigned target) buf = br_ssl_engine_recvrec_buf(ctx->engine, &len); rlen = ctx->low_read(ctx->read_context, buf, len); - if (rlen <= 0) { - // br_ssl_engine_fail(ctx->engine, BR_ERR_IO); + if (rlen <= 0) + { + if (rlen != -ERESTARTSYS && rlen != -EAGAIN && rlen != -EWOULDBLOCK) + br_ssl_engine_fail(ctx->engine, BR_ERR_IO); return rlen; } - if (rlen > 0) { - br_ssl_engine_recvrec_ack(ctx->engine, rlen); - } + + br_ssl_engine_recvrec_ack(ctx->engine, rlen); continue; }