MEDIUM: proto_ux: properly suspend named UNIX listeners

When a listener is suspended, we expect that it may not process any data for
the time it is suspended.

Yet for named UNIX socket, as the suspend operation is a no-op at the proto
level, recv events on the socket may still be processed by the polling loop.

This is quite disturbing as someone may rely on a paused proxy being harmless,
which is true for all protos except for named UNIX sockets.

To fix this behavior, we explicitely disable io recv events when suspending a
named UNIX socket listener (we call disable() method on the listener).

The io recv events will automatically be restored when the listener is resumed
since the l->enable() method is called at the end of the resume() operation.

This could be backported up to 2.4 after a reasonable observation
period to make sure that this change doesn't cause unwanted side-effects.

(cherry picked from commit 2338dba18db3a895fd394a6c07544f03c7f39167)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 115b9fdc39d2408b38ac3331237a4deec4cd7346)
Signed-off-by: Amaury Denoyelle <adenoyelle@haproxy.com>
(cherry picked from commit 49da244638c88f4fa44c0c21fa7e90e9f394dee8)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 78af2135643de2456708672e71da03363999fe65)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
2 files changed