MINOR: proto: skip socket setup for duped FDs
It's not strictly necessary, but it's still better to avoid setting
up the same socket multiple times when it's being duplicated to a few
FDs. We don't change that for inherited ones however since they may
really need to be set up, so we only skip duplicated ones.
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 4691e16..2e5c36a 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -603,6 +603,9 @@
goto tcp_return;
}
+ if (listener->rx.flags & RX_F_MUST_DUP)
+ goto done;
+
fd = listener->rx.fd;
if (listener->bind_conf->options & BC_O_NOLINGER)
@@ -723,6 +726,7 @@
setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, &one, sizeof(one));
#endif
+ done:
/* the socket is ready */
listener_set_state(listener, LI_LISTEN);
goto tcp_return;
diff --git a/src/proto_uxst.c b/src/proto_uxst.c
index ed1fa53..7988e00 100644
--- a/src/proto_uxst.c
+++ b/src/proto_uxst.c
@@ -124,6 +124,9 @@
goto uxst_return;
}
+ if (listener->rx.flags & RX_F_MUST_DUP)
+ goto done;
+
fd = listener->rx.fd;
ready = sock_accepting_conn(&listener->rx) > 0;
@@ -134,6 +137,7 @@
goto uxst_close_return;
}
+ done:
/* the socket is now listening */
listener_set_state(listener, LI_LISTEN);
return err;