uloop timeouts are calculated based on a time value that was fetched
before any callbacks were executed. Hence, the next timeout is off by
the time the callback execution took which can lead to strange side
effects.

Fix this by calculating the next timeout based on a fresh time value.

Signed-off-by: Helmut Schaa <helmut.sc...@googlemail.com>
---
 uloop.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/uloop.c b/uloop.c
index 54ebe8d..deb08a3 100644
--- a/uloop.c
+++ b/uloop.c
@@ -632,6 +632,7 @@ void uloop_run(void)
 
                if (do_sigchld)
                        uloop_handle_processes();
+               uloop_gettime(&tv);
                uloop_run_events(uloop_get_next_timeout(&tv));
        }
 }
-- 
1.7.10.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to