]> granicus.if.org Git - transmission/commitdiff
(trunk libT) #2538 startup takes too long
authorCharles Kerr <charles@transmissionbt.com>
Thu, 29 Oct 2009 17:25:03 +0000 (17:25 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Thu, 29 Oct 2009 17:25:03 +0000 (17:25 +0000)
libtransmission/port-forwarding.c

index a0b3ba12e5794eb124e50c956db3932e1eec0ade..fe30978a1d327e02806172ae37fc1ef769e5bbca 100644 (file)
@@ -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