gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r11446 - gnunet/src/arm


From: gnunet
Subject: [GNUnet-SVN] r11446 - gnunet/src/arm
Date: Thu, 20 May 2010 13:41:09 +0200

Author: grothoff
Date: 2010-05-20 13:41:09 +0200 (Thu, 20 May 2010)
New Revision: 11446

Modified:
   gnunet/src/arm/gnunet-service-arm.c
   gnunet/src/arm/gnunet-service-manager.c
Log:
abort start task on shutdown of connection

Modified: gnunet/src/arm/gnunet-service-arm.c
===================================================================
--- gnunet/src/arm/gnunet-service-arm.c 2010-05-20 11:18:40 UTC (rev 11445)
+++ gnunet/src/arm/gnunet-service-arm.c 2010-05-20 11:41:09 UTC (rev 11446)
@@ -711,6 +711,7 @@
 shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   struct ServiceList *pos;
+
 #if DEBUG_ARM
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Stopping all services\n"));
 #endif

Modified: gnunet/src/arm/gnunet-service-manager.c
===================================================================
--- gnunet/src/arm/gnunet-service-manager.c     2010-05-20 11:18:40 UTC (rev 
11445)
+++ gnunet/src/arm/gnunet-service-manager.c     2010-05-20 11:41:09 UTC (rev 
11446)
@@ -152,6 +152,11 @@
    * Current back-off value.
    */
   struct GNUNET_TIME_Relative back_off;
+  
+  /**
+   * Task that tries to initiate forwarding.
+   */
+  GNUNET_SCHEDULER_TaskIdentifier start_task;
 
   /**
    *
@@ -325,6 +330,9 @@
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Closing forwarding connection (done with both directions)\n");
 #endif
+  if (fc->start_task != GNUNET_SCHEDULER_NO_TASK)
+    GNUNET_SCHEDULER_cancel (scheduler,
+                            fc->start_task);
   if ( (NULL != fc->armClientSocket) &&
        (GNUNET_SYSERR ==
        GNUNET_NETWORK_socket_close (fc->armClientSocket)) )
@@ -497,11 +505,13 @@
                                                                     
rem).value);
 #endif
          rem = GNUNET_TIME_absolute_get_remaining (fc->timeout);
-         GNUNET_SCHEDULER_add_delayed (scheduler,
-                                       GNUNET_TIME_relative_min (fc->back_off,
-                                                                 rem),
-                                       &start_forwarding,
-                                       fc);
+         GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == fc->start_task);
+         fc->start_task
+           = GNUNET_SCHEDULER_add_delayed (scheduler,
+                                           GNUNET_TIME_relative_min 
(fc->back_off,
+                                                                     rem),
+                                           &start_forwarding,
+                                           fc);
        }
       else
        {
@@ -590,11 +600,13 @@
                                                                     
rem).value);
 #endif
          rem = GNUNET_TIME_absolute_get_remaining (fc->timeout);
-         GNUNET_SCHEDULER_add_delayed (scheduler,
-                                       GNUNET_TIME_relative_min (fc->back_off,
-                                                                 rem),
-                                       &start_forwarding,
-                                       fc);
+         GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == fc->start_task);
+         fc->start_task 
+           = GNUNET_SCHEDULER_add_delayed (scheduler,
+                                           GNUNET_TIME_relative_min 
(fc->back_off,
+                                                                     rem),
+                                           &start_forwarding,
+                                           fc);
        }
       else
        {
@@ -703,6 +715,7 @@
   struct ForwardedConnection *fc = cls;
   struct GNUNET_TIME_Relative rem;
 
+  fc->start_task = GNUNET_SCHEDULER_NO_TASK;
   if ( (NULL != tc) &&
        (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) )
     {
@@ -751,11 +764,13 @@
                  (unsigned long long) GNUNET_TIME_relative_min (fc->back_off,
                                                                 rem).value);
 #endif
-      GNUNET_SCHEDULER_add_delayed (scheduler,
-                                   GNUNET_TIME_relative_min (fc->back_off,
-                                                             rem),
-                                   &start_forwarding,
-                                   fc);
+      GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == fc->start_task);
+      fc->start_task
+       = GNUNET_SCHEDULER_add_delayed (scheduler,
+                                       GNUNET_TIME_relative_min (fc->back_off,
+                                                                 rem),
+                                       &start_forwarding,
+                                       fc);
       return;
     }
 #if DEBUG_SERVICE_MANAGER
@@ -885,7 +900,11 @@
                                   GNUNET_TIME_UNIT_FOREVER_REL,
                                   fc->armClientSocket,
                                   &receiveFromClient, fc);
-  start_forwarding (fc, NULL);
+  GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == fc->start_task);
+  fc->start_task 
+    = GNUNET_SCHEDULER_add_now (scheduler,
+                               &start_forwarding,
+                               fc);
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]