From 8bed952022ee2a0f795aafc46e27dd66f7ded212 Mon Sep 17 00:00:00 2001 From: Jan Vidar Krey Date: Tue, 23 Mar 2010 01:06:04 +0100 Subject: [PATCH] Fixed nasty hub freeze caused by timers being injected for the same timestamp as it is being removed from. --- src/network/timeout.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/network/timeout.c b/src/network/timeout.c index c986d41..47e63cb 100644 --- a/src/network/timeout.c +++ b/src/network/timeout.c @@ -54,10 +54,11 @@ void timeout_queue_shutdown(struct timeout_queue* t) size_t timeout_queue_process(struct timeout_queue* t, time_t now) { - size_t pos; + size_t pos = t->last; size_t events = 0; struct timeout_evt* evt = 0; - for (pos = t->last; pos <= now; pos++) + t->last = now; + for (; pos <= now; pos++) { while ((evt = t->events[pos % t->max])) { @@ -66,7 +67,6 @@ size_t timeout_queue_process(struct timeout_queue* t, time_t now) events++; } } - t->last = now; return events; }