BUG/MEDIUM: spoe/mux-spop: Introduce an NOOP action to deal with empty ACK
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 20 Feb 2025 10:56:24 +0000 (11:56 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 20 Feb 2025 15:12:28 +0000 (16:12 +0100)
commit450cfe5a7c9fd76e6a9adee0d0a1bd05d2a33478
treea455066bc3098b07febb17fc596665f17a021397
parent8b7825d8b14824d3aba78332e862b8b13fdd4f63
BUG/MEDIUM: spoe/mux-spop: Introduce an NOOP action to deal with empty ACK

In the SPOP protocol, ACK frame with empty payload are allowed. However, in
that case, because only the payload is transferred, there is no data to
return to the SPOE applet. Only the end of input is reported. Thus the
applet is never woken up. It means that the SPOE filter will be blocked
during the processing timeout and will finally return an error.

To workaournd this issue, a NOOP action is introduced with the value 0. It
is only an internal action for now. It does not exist in the SPOP
protocol. When an ACK frame with an empy payload is received, this noop
action is transferred to the SPOE applet, instead of nothing. Thanks to this
trick, the applet is properly notified. This works because unknown actions
are ignored by the SPOE filter.

This patch must be backported to 3.1.

(cherry picked from commit 851e52b551f80f319b0de1817fc91b7f3949fc67)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
include/haproxy/spoe-t.h
src/mux_spop.c