From: Frédéric Lécaille Date: Thu, 9 Feb 2023 06:48:33 +0000 (+0100) Subject: MINOR: quic: Simplication for qc_set_timer() X-Git-Tag: v2.8-dev5~180 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dd41a45014683f693b686673747327e1e7ab0bbc;p=thirdparty%2Fhaproxy.git MINOR: quic: Simplication for qc_set_timer() There is no reason to run code for nothing if the timer task has been released when entering qc_set_timer(). Must be backported to 2.7. --- diff --git a/src/quic_conn.c b/src/quic_conn.c index 419d1c6703..4a3730958f 100644 --- a/src/quic_conn.c +++ b/src/quic_conn.c @@ -754,6 +754,12 @@ static inline void qc_set_timer(struct quic_conn *qc) TRACE_ENTER(QUIC_EV_CONN_STIMER, qc, NULL, NULL, &qc->path->ifae_pkts); + pktns = NULL; + if (!qc->timer_task) { + TRACE_PROTO("already released timer task", QUIC_EV_CONN_STIMER, qc); + goto leave; + } + pktns = quic_loss_pktns(qc); if (tick_isset(pktns->tx.loss_time)) { qc->timer = pktns->tx.loss_time; @@ -782,19 +788,18 @@ static inline void qc_set_timer(struct quic_conn *qc) if (tick_isset(pto)) qc->timer = pto; out: - if (qc->timer_task) { - if (qc->timer == TICK_ETERNITY) { - qc->timer_task->expire = TICK_ETERNITY; - } - else if (tick_is_expired(qc->timer, now_ms)) { - TRACE_DEVEL("wakeup asap timer task", QUIC_EV_CONN_STIMER, qc); - task_wakeup(qc->timer_task, TASK_WOKEN_MSG); - } - else { - TRACE_DEVEL("timer task scheduling", QUIC_EV_CONN_STIMER, qc); - task_schedule(qc->timer_task, qc->timer); - } + if (qc->timer == TICK_ETERNITY) { + qc->timer_task->expire = TICK_ETERNITY; + } + else if (tick_is_expired(qc->timer, now_ms)) { + TRACE_DEVEL("wakeup asap timer task", QUIC_EV_CONN_STIMER, qc); + task_wakeup(qc->timer_task, TASK_WOKEN_MSG); } + else { + TRACE_DEVEL("timer task scheduling", QUIC_EV_CONN_STIMER, qc); + task_schedule(qc->timer_task, qc->timer); + } + leave: TRACE_LEAVE(QUIC_EV_CONN_STIMER, qc, pktns); }