summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugo Landau <hlandau@openssl.org>2023-10-24 07:59:36 +0100
committerMatt Caswell <matt@openssl.org>2023-10-25 11:14:24 +0100
commitc7ed5e4697a71012e0a2d9dd5eaf997754ae5156 (patch)
tree93f46767462d5099a23b7a9eb66662f58811625b
parent29f633840df49f29e71a57cc9682d9f3703bfe3b (diff)
QUIC CHANNEL: Handle ping deadlines differently
Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22476)
-rw-r--r--ssl/quic/quic_channel.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/ssl/quic/quic_channel.c b/ssl/quic/quic_channel.c
index 28ccf66313..57601ceed1 100644
--- a/ssl/quic/quic_channel.c
+++ b/ssl/quic/quic_channel.c
@@ -1951,6 +1951,15 @@ static void ch_tick(QUIC_TICK_RESULT *res, void *arg, uint32_t flags)
int pn_space = ossl_quic_enc_level_to_pn_space(ch->tx_enc_level);
ossl_quic_tx_packetiser_schedule_ack_eliciting(ch->txp, pn_space);
+
+ /*
+ * If we have no CC budget at this time we cannot process the above
+ * PING request immediately. In any case we have scheduled the
+ * request so bump the ping deadline. If we don't do this we will
+ * busy-loop endlessly as the above deadline comparison condition
+ * will still be met.
+ */
+ ch_update_ping_deadline(ch);
}
/* Write any data to the network due to be sent. */