diff options
| author | Hans Dedecker | 2019-08-08 19:42:15 +0000 |
|---|---|---|
| committer | Hans Dedecker | 2019-08-10 08:13:18 +0000 |
| commit | e9e824046f4df9f97f50d154f034e10cb8f13f96 (patch) | |
| tree | c8c37ecc5c6c7ef3113eb304d284635cc34eb451 | |
| parent | 41a74cba1bec349d1e1c5be4442e7fddb2d4adf7 (diff) | |
| download | odhcpd-e9e824046f4df9f97f50d154f034e10cb8f13f96.tar.gz | |
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 <dedeckeh@gmail.com>
| -rw-r--r-- | src/router.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/router.c b/src/router.c index 63571a3..13c9117 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; } |