- backport fix to mesh_new
authorBart Polot <bart@net.in.tum.de>
Mon, 5 Nov 2012 13:26:23 +0000 (13:26 +0000)
committerBart Polot <bart@net.in.tum.de>
Mon, 5 Nov 2012 13:26:23 +0000 (13:26 +0000)
src/mesh/gnunet-service-mesh-new.c

index 16053a1c2d3cc0855a4e678f5acf96f63c97271d..fee0545f0248b38d31514c58471cc2e974f7c9b9 100644 (file)
@@ -4002,23 +4002,26 @@ tunnel_send_child_bck_ack (void *cls,
   struct MeshTunnel *t = cls;
   struct MeshTunnelFlowControlInfo *fcinfo;
   struct GNUNET_PeerIdentity peer;
+  uint32_t ack;
 
   GNUNET_PEER_resolve (id, &peer);
   fcinfo = tunnel_get_neighbor_fc (t, &peer);
+  ack = fcinfo->bck_pid + t->bck_queue_max - t->bck_queue_n;
+
 
-  if (fcinfo->bck_ack != fcinfo->bck_pid &&
-      GNUNET_NO == GMC_is_pid_bigger (fcinfo->bck_ack, fcinfo->bck_pid))
+  if (fcinfo->bck_ack == ack)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "    Not sending ACK, not needed\n");
     return;
   }
+  fcinfo->bck_ack = ack;
 
-  fcinfo->bck_ack = t->bck_queue_max - t->bck_queue_n + fcinfo->bck_pid;
+  fcinfo->bck_ack = fcinfo->bck_pid + t->bck_queue_max - t->bck_queue_n;
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "    Sending BCK ACK %u\n",
-              fcinfo->bck_ack);
-  send_ack (t, &peer, fcinfo->bck_ack);
+              "    Sending BCK ACK %u (last sent: %u)\n",
+              ack, fcinfo->bck_ack);
+  send_ack (t, &peer, ack);
 }