diff options
author | Hugo Landau <hlandau@openssl.org> | 2024-03-29 14:51:35 +0000 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2024-04-10 15:49:00 +0200 |
commit | 8cd3f34758b292e137ce112a09f566821549115d (patch) | |
tree | 80cd671e1d0af87b0ae6ac84c2dc2de64d3f9a47 /ssl | |
parent | da01235692de643c990a34cae0f523a126be7573 (diff) |
Change approach to SSL_pending API
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24040)
(cherry picked from commit 5a13d35f243be66f6ad914aefe99fb708812dff1)
Diffstat (limited to 'ssl')
-rw-r--r-- | ssl/quic/quic_impl.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ssl/quic/quic_impl.c b/ssl/quic/quic_impl.c index 62ebcd29aa..c77230a19f 100644 --- a/ssl/quic/quic_impl.c +++ b/ssl/quic/quic_impl.c @@ -2472,6 +2472,11 @@ static int quic_write_nonblocking_epw(QCTX *ctx, const void *buf, size_t len, quic_post_write(xso, *written > 0, *written == len, flags, qctx_should_autotick(ctx)); + + if (*written == 0) + /* SSL_write_ex returns 0 if it didn't read anything. */ + return QUIC_RAISE_NORMAL_ERROR(ctx, SSL_ERROR_WANT_READ); + return 1; } @@ -2874,11 +2879,13 @@ static size_t ossl_quic_pending_int(const SSL *s, int check_channel) } if (check_channel) - avail = ossl_quic_stream_recv_pending(ctx.xso->stream) + avail = ossl_quic_stream_recv_pending(ctx.xso->stream, + /*include_fin=*/1) || ossl_quic_channel_has_pending(ctx.qc->ch) || ossl_quic_channel_is_term_any(ctx.qc->ch); else - avail = ossl_quic_stream_recv_pending(ctx.xso->stream); + avail = ossl_quic_stream_recv_pending(ctx.xso->stream, + /*include_fin=*/0); out: quic_unlock(ctx.qc); |