From 2f12b4cc9b44447e62cfe9e2293158defab310dc Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 23 Sep 2024 21:08:06 +0200 Subject: [PATCH] testbench: correctly apply socket options in minitcpsrvr The option name in setsockopts is not a bitmask, so SO_REUSEADDR and SO_REUSEPORT can't be ORed together. Instead apply the options via separate calls. Fixes: #5456 Thanks: Chris Hofstaedtler --- tests/minitcpsrvr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/minitcpsrvr.c b/tests/minitcpsrvr.c index 20fc28978..4ff557813 100644 --- a/tests/minitcpsrvr.c +++ b/tests/minitcpsrvr.c @@ -89,8 +89,11 @@ createListenSocket(void) } // Set SO_REUSEADDR and SO_REUSEPORT options int opt = 1; - if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt)) < 0) { - errout("setsockopt failed"); + if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) { + errout("setsockopt failed for SO_REUSEADDR"); + } + if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEPORT, &opt, sizeof(opt)) < 0) { + errout("setsockopt failed for SO_REUSEPORT"); } fprintf(stderr, "listen on target port %d\n", targetPort);