gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r29002 - gnunet/src/mesh
Date: Thu, 5 Sep 2013 05:21:40 +0200

Author: bartpolot
Date: 2013-09-05 05:21:40 +0200 (Thu, 05 Sep 2013)
New Revision: 29002

Modified:
   gnunet/src/mesh/gnunet-service-mesh-enc.c
Log:
- dont cancel poll if ack is not enough for future traffic

Modified: gnunet/src/mesh/gnunet-service-mesh-enc.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh-enc.c   2013-09-05 03:05:23 UTC (rev 
29001)
+++ gnunet/src/mesh/gnunet-service-mesh-enc.c   2013-09-05 03:21:40 UTC (rev 
29002)
@@ -6007,7 +6007,7 @@
   struct MeshConnection *c;
   struct MeshFlowControl *fc;
   GNUNET_PEER_Id id;
-  uint32_t ack;
+  int fwd;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "\n\n");
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Got an ACK packet from %s!\n",
@@ -6029,11 +6029,13 @@
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "  FWD ACK\n");
     fc = &c->fwd_fc;
+    fwd = GNUNET_YES;
   }
   else if (connection_get_prev_hop (c)->id == id)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "  BCK ACK\n");
     fc = &c->bck_fc;
+    fwd = GNUNET_NO;
   }
   else
   {
@@ -6041,12 +6043,13 @@
     return GNUNET_OK;
   }
 
-  ack = ntohl (msg->ack);
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "  ACK %u\n", ack);
+  fc->last_ack_recv = ntohl (msg->ack);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "  ACK %u\n", fc->last_ack_recv);
 
-  /* Cancel polling if the ACK is bigger than before. */
+
+  /* Cancel polling if the ACK is big enough. */
   if (GNUNET_SCHEDULER_NO_TASK != fc->poll_task &&
-      GMC_is_pid_bigger (ack, fc->last_ack_recv))
+      GMC_is_pid_bigger (fc->last_ack_recv, fc->last_pid_sent))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "  Cancel poll\n");
     GNUNET_SCHEDULER_cancel (fc->poll_task);
@@ -6054,8 +6057,7 @@
     fc->poll_time = GNUNET_TIME_UNIT_SECONDS;
   }
 
-  fc->last_ack_recv = ack;
-  connection_unlock_queue (c, fc == &c->fwd_fc);
+  connection_unlock_queue (c, fwd);
 
   return GNUNET_OK;
 }




reply via email to

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