From 3760747ff452fcb3e29190e670073253c5b47d49 Mon Sep 17 00:00:00 2001 From: Hugo Landau Date: Thu, 10 Aug 2023 19:29:27 +0100 Subject: Minor fixes Reviewed-by: Tomas Mraz Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/21715) --- include/openssl/bio.h.in | 6 +++--- ssl/quic/quic_impl.c | 12 +++++------- ssl/quic/quic_local.h | 3 ++- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/include/openssl/bio.h.in b/include/openssl/bio.h.in index e797769909..e6af3470a5 100644 --- a/include/openssl/bio.h.in +++ b/include/openssl/bio.h.in @@ -188,9 +188,9 @@ extern "C" { * # define BIO_CTRL_SET_KTLS_TX_ZEROCOPY_SENDFILE 90 */ -# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 90 -# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 91 -# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 92 +# define BIO_CTRL_GET_RPOLL_DESCRIPTOR 91 +# define BIO_CTRL_GET_WPOLL_DESCRIPTOR 92 +# define BIO_CTRL_DGRAM_DETECT_PEER_ADDR 93 # define BIO_DGRAM_CAP_NONE 0U # define BIO_DGRAM_CAP_HANDLES_SRC_ADDR (1U << 0) diff --git a/ssl/quic/quic_impl.c b/ssl/quic/quic_impl.c index 49133f0ca7..839168040b 100644 --- a/ssl/quic/quic_impl.c +++ b/ssl/quic/quic_impl.c @@ -1565,15 +1565,13 @@ static int quic_do_handshake(QCTX *ctx) if (!qc->started && !qc->addressing_probe_done) { long rcaps = BIO_dgram_get_effective_caps(qc->net_rbio); long wcaps = BIO_dgram_get_effective_caps(qc->net_wbio); - int can_use_addressed = - (wcaps & BIO_DGRAM_CAP_HANDLES_DST_ADDR) != 0 - && (rcaps & BIO_DGRAM_CAP_PROVIDES_SRC_ADDR) != 0; - qc->addressed_mode = can_use_addressed; - qc->addressing_probe_done = 1; + qc->addressed_mode_r = ((rcaps & BIO_DGRAM_CAP_PROVIDES_SRC_ADDR) != 0); + qc->addressed_mode_w = ((wcaps & BIO_DGRAM_CAP_HANDLES_DST_ADDR) != 0); + qc->addressing_probe_done = 1; } - if (!qc->started && qc->addressed_mode + if (!qc->started && qc->addressed_mode_w && BIO_ADDR_family(&qc->init_peer_addr) == AF_UNSPEC) { /* * We are trying to connect and are using addressed mode, which means we @@ -1595,7 +1593,7 @@ static int quic_do_handshake(QCTX *ctx) } if (!qc->started - && qc->addressed_mode + && qc->addressed_mode_w && BIO_ADDR_family(&qc->init_peer_addr) == AF_UNSPEC) { /* * If we still don't have a peer address in addressed mode, we can't do diff --git a/ssl/quic/quic_local.h b/ssl/quic/quic_local.h index aaaab128aa..f492dc656b 100644 --- a/ssl/quic/quic_local.h +++ b/ssl/quic/quic_local.h @@ -199,7 +199,8 @@ struct quic_conn_st { unsigned int addressing_probe_done : 1; /* Are we using addressed mode (BIO_sendmmsg with non-NULL peer)? */ - unsigned int addressed_mode : 1; + unsigned int addressed_mode_w : 1; + unsigned int addressed_mode_r : 1; /* Default stream type. Defaults to SSL_DEFAULT_STREAM_MODE_AUTO_BIDI. */ uint32_t default_stream_mode; -- cgit v1.2.3