From c61f8987de0bbe46fefeb8d14cb974bc1d870227 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 29 Oct 2009 17:25:03 +0000 Subject: [PATCH] (trunk libT) #2538 startup takes too long --- libtransmission/port-forwarding.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/libtransmission/port-forwarding.c b/libtransmission/port-forwarding.c index a0b3ba12e..fe30978a1 100644 --- a/libtransmission/port-forwarding.c +++ b/libtransmission/port-forwarding.c @@ -89,17 +89,9 @@ natPulse( tr_shared * s, tr_bool doPortCheck ) } static void -onTimer( int fd UNUSED, short what UNUSED, void * vshared ) +set_evtimer_from_status( tr_shared * s ) { int sec=0, msec=0; - tr_shared * s = vshared; - - assert( s ); - assert( s->timer ); - - /* do something */ - natPulse( s, s->doPortCheck ); - s->doPortCheck = FALSE; /* when to wake up again */ switch( tr_sharedTraversalStatus( s ) ) @@ -125,6 +117,22 @@ onTimer( int fd UNUSED, short what UNUSED, void * vshared ) tr_timerAdd( s->timer, sec, msec ); } +static void +onTimer( int fd UNUSED, short what UNUSED, void * vshared ) +{ + tr_shared * s = vshared; + + assert( s ); + assert( s->timer ); + + /* do something */ + natPulse( s, s->doPortCheck ); + s->doPortCheck = FALSE; + + /* set up the timer for the next pulse */ + set_evtimer_from_status( s ); +} + /*** **** ***/ @@ -190,7 +198,7 @@ start_timer( tr_shared * s ) { s->timer = tr_new0( struct event, 1 ); evtimer_set( s->timer, onTimer, s ); - onTimer( 0, 0, s ); + set_evtimer_from_status( s ); } void