From: Amaury Denoyelle Date: Tue, 25 Jan 2022 16:48:47 +0000 (+0100) Subject: MINOR: quic: define QUIC flag on listener X-Git-Tag: v2.6-dev1~72 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b59b88950a58fdc58b4d95249de2aff756f6238f;p=thirdparty%2Fhaproxy.git MINOR: quic: define QUIC flag on listener Mark QUIC listeners with the flag LI_F_QUIC_LISTENER. It is set by the proto-quic layer on the add listener callback. This allows to override more clearly the accept callback on quic_session_accept. --- diff --git a/include/haproxy/listener-t.h b/include/haproxy/listener-t.h index 6fffc4a4ec..136ad1e226 100644 --- a/include/haproxy/listener-t.h +++ b/include/haproxy/listener-t.h @@ -191,6 +191,8 @@ struct bind_conf { struct rx_settings settings; /* all the settings needed for the listening socket */ }; +#define LI_F_QUIC_LISTENER 0x00000001 /* listener uses proto quic */ + /* The listener will be directly referenced by the fdtab[] which holds its * socket. The listener provides the protocol-specific accept() function to * the fdtab. diff --git a/src/cfgparse.c b/src/cfgparse.c index 6ce2f529ed..3dfaf65cb5 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -66,6 +66,7 @@ #include #include #include +#include #include #include #include @@ -3901,11 +3902,13 @@ out_uri_auth_compat: if (!listener->maxaccept) listener->maxaccept = global.tune.maxaccept ? global.tune.maxaccept : MAX_ACCEPT; - /* listener->accept may already be initialized by some - * protocols so do not overwrite it in this case. - */ - if (!listener->accept) - listener->accept = session_accept_fd; + /* listener accept callback */ + listener->accept = session_accept_fd; +#ifdef USE_QUIC + /* override the accept callback for QUIC listeners. */ + if (listener->flags & LI_F_QUIC_LISTENER) + listener->accept = quic_session_accept; +#endif listener->analysers |= curproxy->fe_req_ana; listener->default_target = curproxy->default_target; diff --git a/src/proto_quic.c b/src/proto_quic.c index 283484596c..6fdb3f779c 100644 --- a/src/proto_quic.c +++ b/src/proto_quic.c @@ -518,8 +518,7 @@ int quic_connect_server(struct connection *conn, int flags) */ static void quic_add_listener(struct protocol *proto, struct listener *listener) { - /* custom accept callback for QUIC */ - listener->accept = quic_session_accept; + listener->flags |= LI_F_QUIC_LISTENER; MT_LIST_INIT(&listener->rx.pkts); listener->rx.odcids = EB_ROOT_UNIQUE;