gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r28092 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r28092 - gnunet/src/mesh
Date: Tue, 16 Jul 2013 14:50:06 +0200

Author: bartpolot
Date: 2013-07-16 14:50:06 +0200 (Tue, 16 Jul 2013)
New Revision: 28092

Modified:
   gnunet/src/mesh/gnunet-service-mesh.c
Log:
-cancel polling on tunnel destruction/empty queue

Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c       2013-07-16 12:49:33 UTC (rev 
28091)
+++ gnunet/src/mesh/gnunet-service-mesh.c       2013-07-16 12:50:06 UTC (rev 
28092)
@@ -2248,7 +2248,7 @@
   else if (0 != hop)
     send_ack (t, hop, ack);
   else
-    GNUNET_break (0);
+    GNUNET_break (GNUNET_YES == t->destroy);
   t->force_ack = GNUNET_NO;
 }
 
@@ -2792,6 +2792,16 @@
     peer_cancel_queues (t->next_hop, t);
     GNUNET_PEER_change_rc (t->next_hop, -1);
   }
+  if (GNUNET_SCHEDULER_NO_TASK != t->next_fc.poll_task)
+  {
+    GNUNET_SCHEDULER_cancel (t->next_fc.poll_task);
+    t->next_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
+  }
+  if (GNUNET_SCHEDULER_NO_TASK != t->prev_fc.poll_task)
+  {
+    GNUNET_SCHEDULER_cancel (t->prev_fc.poll_task);
+    t->prev_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
+  }
   if (0 != t->dest) {
       peer_info_remove_tunnel (peer_get_short (t->dest), t);
   }
@@ -3395,19 +3405,19 @@
                                             &queue_send,
                                             peer);
   }
+  if (peer->id == t->next_hop)
+    fc = &t->next_fc;
+  else if (peer->id == t->prev_hop)
+    fc = &t->prev_fc;
+  else
+  {
+    GNUNET_break (0);
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "id: %u, next: %u, prev: %u\n",
+                peer->id, t->next_hop, t->prev_hop);
+    return data_size;
+  }
   if (NULL != peer->queue_head)
   {
-    if (peer->id == t->next_hop)
-      fc = &t->next_fc;
-    else if (peer->id == t->prev_hop)
-      fc = &t->prev_fc;
-    else
-    {
-      GNUNET_break (0);
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "id: %u, next: %u, prev: %u\n",
-                  peer->id, t->next_hop, t->prev_hop);
-      return data_size;
-    }
     if (GNUNET_SCHEDULER_NO_TASK == fc->poll_task && fc->queue_n > 0)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@@ -3418,6 +3428,14 @@
                                                     &tunnel_poll, fc);
     }
   }
+  else
+  {
+    if (GNUNET_SCHEDULER_NO_TASK != fc->poll_task)
+    {
+      GNUNET_SCHEDULER_cancel (fc->poll_task);
+      fc->poll_task = GNUNET_SCHEDULER_NO_TASK;
+    }
+  }
   if (GNUNET_YES == t->destroy && 0 == t->pending_messages)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "*  destroying tunnel!\n");




reply via email to

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