gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r10483 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r10483 - gnunet/src/transport
Date: Thu, 4 Mar 2010 11:04:24 +0100

Author: nevans
Date: 2010-03-04 11:04:24 +0100 (Thu, 04 Mar 2010)
New Revision: 10483

Modified:
   gnunet/src/transport/transport_api.c
Log:
coverity fixes, strange behavior(s) in transport_api.c hopefully resolved

Modified: gnunet/src/transport/transport_api.c
===================================================================
--- gnunet/src/transport/transport_api.c        2010-03-04 09:49:27 UTC (rev 
10482)
+++ gnunet/src/transport/transport_api.c        2010-03-04 10:04:24 UTC (rev 
10483)
@@ -976,7 +976,7 @@
 
   if (buf == NULL)
     {
-#if DEBUG_TRANSPORT
+#if DEBUG_TRANSPORT_TIMEOUT
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                   "Timeout while trying to transmit `%s' request.\n",
                   "HELLO");
@@ -1121,7 +1121,7 @@
  * @param cls closure (struct GNUNET_TRANSPORT_Handle *)
  * @param msg message received, NULL on timeout or fatal error
  */
-static void demultiplexer (void *cls, 
+static void demultiplexer (void *cls,
                           const struct GNUNET_MessageHeader *msg);
 
 
@@ -1138,6 +1138,7 @@
   struct GNUNET_TRANSPORT_Handle *h = cls;
   struct ControlMessage *pos;
   struct NeighbourList *n;
+  struct NeighbourList *next;
 
   h->reconnect_task = GNUNET_SCHEDULER_NO_TASK;
   if ( (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0)
@@ -1149,9 +1150,10 @@
   n = h->neighbours;
   while (NULL != n)
     {
+      next = n->next;
       if (n->is_connected)
        neighbour_disconnect (n);
-      n = n->next;
+      n = next;
     }
 #if DEBUG_TRANSPORT
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Connecting to transport service.\n");
@@ -1296,6 +1298,7 @@
   struct NeighbourList *n;
   struct HelloWaitList *hwl;
   struct GNUNET_CLIENT_Connection *client;
+  struct ControlMessage *cm;
 
 #if DEBUG_TRANSPORT
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transport disconnect called!\n");
@@ -1336,6 +1339,25 @@
         hwl->rec (hwl->rec_cls, NULL);
       GNUNET_free (hwl);
     }
+
+  /* Check for still scheduled control messages, cancel delay tasks if so */
+  /* Added because somehow a notify_delay_task is remaining scheduled and is 
ever so annoying */
+  while ( (NULL != (cm = handle->control_head)))
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  _("Disconnect before control message sent!\n"));
+      if (cm->notify_delay_task != GNUNET_SCHEDULER_NO_TASK)
+        {
+          GNUNET_SCHEDULER_cancel (handle->sched, cm->notify_delay_task);
+          cm->notify_delay_task = GNUNET_SCHEDULER_NO_TASK;
+        }
+      GNUNET_CONTAINER_DLL_remove (handle->control_head,
+                                   handle->control_tail,
+                                   cm);
+      GNUNET_free (cm);
+    }
+  /* end check */
+
   if (handle->reconnect_task != GNUNET_SCHEDULER_NO_TASK)
     {
       GNUNET_SCHEDULER_cancel (handle->sched, handle->reconnect_task);





reply via email to

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