diff --git a/src/knot/server/net.c b/src/knot/server/net.c index a55cb89d7433c743548254b1eacea93dee8845b7..b3054d08666db51b0f166d4040263ebc9bb6283e 100644 --- a/src/knot/server/net.c +++ b/src/knot/server/net.c @@ -81,11 +81,6 @@ int net_bound_socket(int type, struct sockaddr_storage *ss) int flag = 1; (void) setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag)); - /* Reuse port if available. */ -#if defined(SO_REUSEPORT) - (void) setsockopt(socket, SOL_SOCKET, SO_REUSEPORT, &flag, sizeof(flag)); -#endif - /* Unlink UNIX socket if exists. */ if (ss->ss_family == AF_UNIX) { unlink(addr_str); diff --git a/src/knot/server/udp-handler.c b/src/knot/server/udp-handler.c index 9223368b04e148119469d86d4ea6c2c3241ee60f..b4f9a5a83e466765223ada0e54dfcf6327c4011b 100644 --- a/src/knot/server/udp-handler.c +++ b/src/knot/server/udp-handler.c @@ -451,30 +451,6 @@ void __attribute__ ((constructor)) udp_master_init() #endif /* HAVE_RECVMMSG */ } -static void unbind_ifaces(ifacelist_t *ifaces, fd_set *set, int maxfd) -{ - ref_release((ref_t *)ifaces); -#if defined(SO_REUSEPORT) - for (int fd = 0; fd <= maxfd; ++fd) { - if (FD_ISSET(fd, set)) { - close(fd); - } - } -#endif - FD_ZERO(set); -} - -static int bind_iface(iface_t *iface, fd_set *set) -{ -#if defined(SO_REUSEPORT) - int fd = net_bound_socket(SOCK_DGRAM, &iface->addr); -#else - int fd = iface->fd[IO_UDP]; -#endif - FD_SET(fd, set); - return fd; -} - int udp_master(dthread_t *thread) { unsigned cpu = dt_online_cpus(); @@ -530,14 +506,13 @@ int udp_master(dthread_t *thread) FD_ZERO(&fds); rcu_read_lock(); - unbind_ifaces(ref, &fds, maxfd); - maxfd = 0; - minfd = INT_MAX; + ref_release((ref_t *)ref); ref = handler->server->ifaces; if (ref) { iface_t *i = NULL; WALK_LIST(i, ref->l) { - int fd = bind_iface(i, &fds); + int fd = i->fd[IO_UDP]; + FD_SET(fd, &fds); maxfd = MAX(fd, maxfd); minfd = MIN(fd, minfd); } @@ -573,7 +548,7 @@ int udp_master(dthread_t *thread) } _udp_deinit(rq); - unbind_ifaces(ref, &fds, maxfd); + ref_release((ref_t *)ref); mp_delete(udp.query_ctx.mm.ctx); return KNOT_EOK; }