gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r16282 - gnunet/src/fragmentation


From: gnunet
Subject: [GNUnet-SVN] r16282 - gnunet/src/fragmentation
Date: Mon, 1 Aug 2011 20:31:13 +0200

Author: grothoff
Date: 2011-08-01 20:31:12 +0200 (Mon, 01 Aug 2011)
New Revision: 16282

Modified:
   gnunet/src/fragmentation/fragmentation.c
Log:
fix

Modified: gnunet/src/fragmentation/fragmentation.c
===================================================================
--- gnunet/src/fragmentation/fragmentation.c    2011-08-01 13:43:22 UTC (rev 
16281)
+++ gnunet/src/fragmentation/fragmentation.c    2011-08-01 18:31:12 UTC (rev 
16282)
@@ -79,6 +79,12 @@
   uint64_t acks;
 
   /**
+   * Bitfield with all possible bits for 'acks' (used to mask the
+   * ack we get back).
+   */
+  uint64_t acks_mask;
+
+  /**
    * Task performing work for the fragmenter.
    */
   GNUNET_SCHEDULER_TaskIdentifier task;
@@ -268,9 +274,10 @@
   bits = (size + mtu - sizeof (struct FragmentHeader) - 1) / (mtu - sizeof 
(struct FragmentHeader));
   GNUNET_assert (bits <= 64);
   if (bits == 64)
-    fc->acks = UINT64_MAX;      /* set all 64 bit */
+    fc->acks_mask = UINT64_MAX;      /* set all 64 bit */
   else
-    fc->acks = (1LL << bits) - 1; /* set lowest 'bits' bit */
+    fc->acks_mask = (1LL << bits) - 1; /* set lowest 'bits' bit */
+  fc->acks = fc->acks_mask;
   fc->task = GNUNET_SCHEDULER_add_now (&transmit_next,
                                       fc);
   return fc;
@@ -343,7 +350,7 @@
                                _("# bits removed from fragmentation ACKs"),
                                1, GNUNET_NO);
     }
-  fc->acks = abits;
+  fc->acks = abits & fc->acks_mask;
   if (0 != fc->acks)
     {
       /* more to transmit, do so right now (if tracker permits...) */




reply via email to

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