On 10/30/25 7:04 AM, Alexis Lothoré wrote:
+ int family = cfg->ipproto == 6 ? AF_INET6 : AF_INET;
+
+ cfg->server_fd = start_reuseport_server(family, SOCK_STREAM,
+ cfg->server_addr, TEST_PORT,
+ TIMEOUT_MS, 1);
Why reuseport is needed? Does it have issue in bind() to the same
ip/port in the later sub-test?
Yes, I observed that is I use the bare start_server, I systematically have
the first test passing, an all the others failing on the server startup
with errno 98 (Address already in use). I have been assuming that it is due
to some TIME_WAIT state on the freshly closed socket, but I may be missing
something ?
Thanks for confirming. You are right. It should be the TIME_WAIT. Using
SO_REUSEPORT works but become confusing on what the test is trying to do
by starting only 1 reuseport server. reuseport is usually used with >1
server listening on the same address. A better thing to do is to always
setsockopt(SO_REUSEADDR) in start_server_addr for TCP.