]> granicus.if.org Git - transmission/commitdiff
(trunk libT) tweak the shutdown code
authorCharles Kerr <charles@transmissionbt.com>
Thu, 11 Feb 2010 04:07:13 +0000 (04:07 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Thu, 11 Feb 2010 04:07:13 +0000 (04:07 +0000)
libtransmission/session.c

index 00d4ba9b2f8447b802192b47afc73e74d92d69b7..3255abb404fd784355df5ba145a22ddc6ecbbfc7 100644 (file)
@@ -1507,9 +1507,9 @@ sessionCloseImpl( void * vsession )
 }
 
 static int
-deadlineReached( const uint64_t deadline )
+deadlineReached( const time_t deadline )
 {
-    return tr_date( ) >= deadline;
+    return time( NULL ) >= deadline;
 }
 
 #define SHUTDOWN_MAX_SECONDS 20
@@ -1517,8 +1517,7 @@ deadlineReached( const uint64_t deadline )
 void
 tr_sessionClose( tr_session * session )
 {
-    const int      maxwait_msec = SHUTDOWN_MAX_SECONDS * 1000;
-    const uint64_t deadline = tr_date( ) + maxwait_msec;
+    const time_t deadline = time( NULL ) + SHUTDOWN_MAX_SECONDS;
 
     assert( tr_isSession( session ) );
 
@@ -1550,11 +1549,14 @@ tr_sessionClose( tr_session * session )
     {
         static tr_bool forced = FALSE;
         dbgmsg( "waiting for libtransmission thread to finish" );
-        tr_wait_msec( 100 );
+        tr_wait_msec( 500 );
         if( deadlineReached( deadline ) && !forced )
         {
             event_loopbreak( );
             forced = TRUE;
+
+            if( time( NULL ) >= deadline + 3 )
+                break;
         }
     }