]> git.kaiwu.me - haproxy.git/commit
BUG/MINOR: mux-h2: prevent past scheduling with idle connections
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 9 Apr 2025 12:26:54 +0000 (14:26 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 17 Apr 2025 12:49:36 +0000 (14:49 +0200)
commit3ebdd3ae509236af1f19d80cab98b385a751426b
tree063c435e578fda8722bb966d948942e85a4dc0cd
parentb81ab159a613323a0e8cd625d138955acfcbb666
BUG/MINOR: mux-h2: prevent past scheduling with idle connections

While reviewing HTTP/2 MUX timeout, it seems there is a possibility that
MUX task is requeued via h2c_update_timeout() with an already expired
date. This can happens with idle connections on two cases :
* first with shut timeout, as timer is not refreshed if already set
* second with http-request and keep-alive timers, which are based on
  idle_start

Queuing an already expired task is an undefined behavior. Fix this by
using task_wakeup() instead of task_queue() at the end of
h2c_update_timeout() if such case occurs.

This should be backported up to 2.6.
src/mux_h2.c