On Mon, 21 Oct 2024 at 15:54, Daniel P. Berrangé <berra...@redhat.com> wrote: > > Setting the SO_REUSEADDR property on a socket allows binding to a port > number that is in the TIMED_WAIT state. This is usually done on listener > sockets, to enable a server to restart itself without having to wait for > the completion of TIMED_WAIT on the port.
[...] > diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c > index 60c44b2b56..80594ecad5 100644 > --- a/util/qemu-sockets.c > +++ b/util/qemu-sockets.c > @@ -367,7 +367,6 @@ static int inet_connect_addr(const InetSocketAddress > *saddr, > addr->ai_family); > return -1; > } > - socket_set_fast_reuse(sock); > > /* connect to peer */ > do { We definitely want to keep the socket_set_fast_reuse() call in create_fast_reuse_socket() as that function is used (only) in the "create socket, listen, bind" server socket code path. (Arguably create_fast_reuse_socket() is a bit unnecessary as it has only one callsite.) The one in inet_connect_addr() is clearly wrong as that's the client end (fixed in this patch). How about the call in inet_dgram_saddr() ? I'm not sure how SO_REUSEADDR interacts with UDP sockets... (I'm assuming the answer is "we need it there" so I'm kind of asking for the code-review record really.) In net/socket.c we already set SO_REUSEADDR for dgram and for listening sockets but not for client ones, so we're now consistent there. thanks -- PMM