From 000182fe4f94a5a6ec139456a2b74f0cdea13b9c Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Thu, 8 Aug 2019 21:42:15 +0200 Subject: router: fix lingering uloop socket descriptor In case setting one of the socket options fails; make sure the raw socket is removed from the uloop file descriptor list before the socket is closed. In case this is not done and a new raw socket is created with the same fd value odhcpd will not be triggered by uloop in case RS messages are received on the socket as reported in https://github.com/openwrt/odhcpd/issues/135 Signed-off-by: Hans Dedecker --- src/router.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/router.c b/src/router.c index 0040e7a..c68d0d5 100644 --- a/src/router.c +++ b/src/router.c @@ -213,6 +213,9 @@ int router_setup_interface(struct interface *iface, bool enable) } out: if (ret < 0 && iface->router_event.uloop.fd >= 0) { + if (iface->router_event.uloop.registered) + uloop_fd_delete(&iface->router_event.uloop); + close(iface->router_event.uloop.fd); iface->router_event.uloop.fd = -1; } -- cgit v1.2.3