gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r27093 - gnunet/src/mesh
Date: Fri, 10 May 2013 18:14:44 +0200

Author: bartpolot
Date: 2013-05-10 18:14:44 +0200 (Fri, 10 May 2013)
New Revision: 27093

Modified:
   gnunet/src/mesh/gnunet-service-mesh-new.c
Log:
- cancel poll when receiving big enough ack

Modified: gnunet/src/mesh/gnunet-service-mesh-new.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh-new.c   2013-05-10 16:06:13 UTC (rev 
27092)
+++ gnunet/src/mesh/gnunet-service-mesh-new.c   2013-05-10 16:14:44 UTC (rev 
27093)
@@ -4192,22 +4192,30 @@
   {
     debug_bck_ack++;
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "  FWD ACK\n");
+    if (GNUNET_SCHEDULER_NO_TASK != t->next_fc.poll_task &&
+        GMC_is_pid_bigger (ack, t->next_fc.last_ack_recv))
+    {
+      GNUNET_SCHEDULER_cancel (t->next_fc.poll_task);
+      t->next_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
+      t->next_fc.poll_time = GNUNET_TIME_UNIT_SECONDS;
+    }
     t->next_fc.last_ack_recv = ack;
+    peer_unlock_queue (t->next_hop);
     tunnel_send_fwd_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
-    peer_unlock_queue (t->next_hop);
-//     if (GNUNET_SCHEDULER_NO_TASK != cinfo->fc_poll) FIXME
-//     {
-//       GNUNET_SCHEDULER_cancel (cinfo->fc_poll);
-//       cinfo->fc_poll = GNUNET_SCHEDULER_NO_TASK;
-//       cinfo->fc_poll_time = GNUNET_TIME_UNIT_SECONDS;
-//     }
   }
   else
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "  BCK ACK\n");
+    if (GNUNET_SCHEDULER_NO_TASK != t->prev_fc.poll_task &&
+        GMC_is_pid_bigger (ack, t->prev_fc.last_ack_recv))
+    {
+      GNUNET_SCHEDULER_cancel (t->prev_fc.poll_task);
+      t->prev_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
+      t->prev_fc.poll_time = GNUNET_TIME_UNIT_SECONDS;
+    }
     t->prev_fc.last_ack_recv = ack;
+    peer_unlock_queue (t->prev_hop);
     tunnel_send_bck_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
-    peer_unlock_queue (t->prev_hop);
   }
   return GNUNET_OK;
 }




reply via email to

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