From 83a966d02593cb9790b19f51b3eb688612cec7d3 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 11 Apr 2022 17:54:46 +0200 Subject: [PATCH] MINOR: connection: add conn_fd() to retrieve the FD only when it exists There are plenty of places (particularly in debug code) where we try to dump the connection's FD only when the connection is defined. That's already a pain but now it gets one step further with QUIC because we do *not* want to dump this FD in this case. conn_fd() checks if the connection exists, is ready and is not fd-less, and returns the FD only in this case, otherwise returns -1. This aims at simplifying most of these conditions. --- include/haproxy/connection.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/haproxy/connection.h b/include/haproxy/connection.h index 5ce13899a..f6407ff4b 100644 --- a/include/haproxy/connection.h +++ b/include/haproxy/connection.h @@ -200,6 +200,16 @@ static inline void conn_stop_tracking(struct connection *conn) conn->flags &= ~CO_FL_XPRT_TRACKED; } +/* returns the connection's FD if the connection exists, its control is ready, + * and the connection has an FD, otherwise -1. + */ +static inline int conn_fd(const struct connection *conn) +{ + if (!conn || !conn_ctrl_ready(conn) || (conn->flags & CO_FL_FDLESS)) + return -1; + return conn->handle.fd; +} + /* read shutdown, called from the rcv_buf/rcv_pipe handlers when * detecting an end of connection. */