Define a special accept cb for QUIC listeners to quic_session_accept().
This operation is conducted during the proto.add callback when creating
listeners.
A special care is now taken care when setting the standard callback
session_accept_fd() to not overwrite if already defined by the proto
layer.
#include <haproxy/connection-t.h>
#include <haproxy/listener-t.h>
+int quic_session_accept(struct connection *cli_conn);
int quic_sock_accepting_conn(const struct receiver *rx);
struct connection *quic_sock_accept_conn(struct listener *l, int *status);
void quic_sock_fd_iocb(int fd);
if (!listener->maxaccept)
listener->maxaccept = global.tune.maxaccept ? global.tune.maxaccept : MAX_ACCEPT;
- listener->accept = session_accept_fd;
+ /* 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->analysers |= curproxy->fe_req_ana;
listener->default_target = curproxy->default_target;
*/
static void quic_add_listener(struct protocol *proto, struct listener *listener)
{
+ /* custom accept callback for QUIC */
+ listener->accept = quic_session_accept;
+
MT_LIST_INIT(&listener->rx.pkts);
listener->rx.odcids = EB_ROOT_UNIQUE;
listener->rx.cids = EB_ROOT_UNIQUE;
cli_conn->handle.fd = l->rx.fd;
cli_conn->target = &l->obj_type;
- /* XXX Should not be there. */
- l->accept = quic_session_accept;
/* We need the xprt context before accepting (->accept()) the connection:
* we may receive packet before this connection acception.
*/