diff options
Diffstat (limited to 'src/net/retry.c')
| -rw-r--r-- | src/net/retry.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/net/retry.c b/src/net/retry.c index 5eefa3d48..b65bb57e0 100644 --- a/src/net/retry.c +++ b/src/net/retry.c @@ -57,8 +57,10 @@ static LIST_HEAD ( timers ); * be stopped and the timer's callback function will be called. */ void start_timer ( struct retry_timer *timer ) { - if ( ! timer->running ) + if ( ! timer->running ) { list_add ( &timer->list, &timers ); + ref_get ( timer->refcnt ); + } timer->start = currticks(); timer->running = 1; @@ -136,6 +138,8 @@ void stop_timer ( struct retry_timer *timer ) { timer, timer->timeout ); } } + + ref_put ( timer->refcnt ); } /** @@ -164,7 +168,9 @@ static void timer_expired ( struct retry_timer *timer ) { timer, timer->timeout ); /* Call expiry callback */ - timer->expired ( timer, fail ); + timer->expired ( timer, fail ); + + ref_put ( timer->refcnt ); } /** |
