router: close socket upon NETEV_IFINDEX_CHANGE fixed
authorKoen Aerts <aertskoen5@gmail.com>
Mon, 19 Aug 2019 11:18:04 +0000 (13:18 +0200)
committerHans Dedecker <dedeckeh@gmail.com>
Mon, 19 Aug 2019 19:14:59 +0000 (21:14 +0200)
Make sure the raw socket is removed from the uloop file descriptor
list before the socket is closed as introduced in
https://github.com/openwrt/odhcpd/commit/000182fe4f94a5a6ec139456a2b74f0cdea13b9c

Related to  https://github.com/openwrt/odhcpd/issues/135

Signed-off-by: Koen Aerts <aertskoen5@gmail.com>
src/router.c

index 4bc9a9695f17cd993b6dc0e8c66ecbf728e39883..812946d6014afaef4e0e4aa6b685a803afd63cfd 100644 (file)
@@ -232,6 +232,9 @@ static void router_netevent_cb(unsigned long event, struct netevent_handler_info
        case NETEV_IFINDEX_CHANGE:
                iface = info->iface;
                if (iface && 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;
                }