gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r20424 - gnunet/src/stream


From: gnunet
Subject: [GNUnet-SVN] r20424 - gnunet/src/stream
Date: Sat, 10 Mar 2012 16:09:21 +0100

Author: harsha
Date: 2012-03-10 16:09:21 +0100 (Sat, 10 Mar 2012)
New Revision: 20424

Modified:
   gnunet/src/stream/stream_api.c
Log:
using GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH

Modified: gnunet/src/stream/stream_api.c
===================================================================
--- gnunet/src/stream/stream_api.c      2012-03-10 09:13:20 UTC (rev 20423)
+++ gnunet/src/stream/stream_api.c      2012-03-10 15:09:21 UTC (rev 20424)
@@ -375,7 +375,7 @@
   /**
    * The packet_buffers associated with this Handle
    */
-  struct GNUNET_STREAM_DataMessage *messages[64];
+  struct GNUNET_STREAM_DataMessage 
*messages[GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH];
 
   /**
    * The write continuation callback
@@ -692,7 +692,7 @@
                      unsigned int bit, 
                      int value)
 {
-  GNUNET_assert (bit < 64);
+  GNUNET_assert (bit < GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH);
   if (GNUNET_YES == value)
     *bitmap |= (1LL << bit);
   else
@@ -711,7 +711,7 @@
 ackbitmap_is_bit_set (const GNUNET_STREAM_AckBitmap *bitmap,
                       unsigned int bit)
 {
-  GNUNET_assert (bit < 64);
+  GNUNET_assert (bit < GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH);
   return 0 != (*bitmap & (1LL << bit));
 }
 
@@ -748,7 +748,7 @@
 
   ack_packet = -1;
   /* Find the last acknowledged packet */
-  for (packet=0; packet < 64; packet++)
+  for (packet=0; packet < GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH; packet++)
     {      
       if (GNUNET_YES == ackbitmap_is_bit_set (&io_handle->ack_bitmap,
                                               packet))
@@ -849,6 +849,10 @@
                                socket->status,
                                socket->receive_buffer + socket->copy_offset,
                                valid_read_size);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "%x: Read processor completed successfully\n",
+              socket->our_id);
+
   /* Free the read handle */
   GNUNET_free (socket->read_handle);
   socket->read_handle = NULL;
@@ -975,7 +979,7 @@
          expecting */
       relative_sequence_number = 
         ntohl (msg->sequence_number) - socket->read_sequence_number;
-      if ( relative_sequence_number > 64)
+      if ( relative_sequence_number > GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH)
         {
           GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                       "%x: Ignoring received message with sequence number 
%u\n",
@@ -984,8 +988,21 @@
           return GNUNET_YES;
         }
 
+      /* Check if we have already seen this message */
+      if (GNUNET_YES == ackbitmap_is_bit_set (&socket->ack_bitmap,
+                                              relative_sequence_number))
+        {
+          GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                      "%x: Ignoring already received message with sequence "
+                      "number %u\n",
+                      socket->our_id,
+                      ntohl (msg->sequence_number));
+          return GNUNET_YES;
+        }
+
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "%x: Receiving DATA with sequence number: %u and size: %d 
from %x\n",
+                  "%x: Receiving DATA with sequence number: %u and size: %d "
+                  "from %x\n",
                   socket->our_id,
                   ntohl (msg->sequence_number),
                   ntohs (msg->header.header.size),
@@ -995,7 +1012,6 @@
       size -= sizeof (struct GNUNET_STREAM_DataMessage);
       relative_offset = ntohl (msg->offset) - socket->read_offset;
       bytes_needed = relative_offset + size;
-      
       if (bytes_needed > socket->receive_buffer_size)
         {
           if (bytes_needed <= RECEIVE_BUFFER_SIZE)
@@ -1030,7 +1046,7 @@
                             GNUNET_YES);
 
       /* Start ACK sending task if one is not already present */
-      if (0 == socket->ack_task_id)
+      if (GNUNET_SCHEDULER_NO_TASK == socket->ack_task_id)
        {
          socket->ack_task_id = 
            GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_ntoh
@@ -1829,7 +1845,7 @@
         }
       
       if (!((socket->write_sequence_number 
-             - htonl (ack->base_sequence_number)) < 64))
+             - htonl (ack->base_sequence_number)) < 
GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH))
         {
           GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                       "%x: Received DATA_ACK with unexpected base sequence",
@@ -1859,7 +1875,7 @@
 
       /* Check if we have received all acknowledgements */
       need_retransmission = GNUNET_NO;
-      for (packet=0; packet < 64; packet++)
+      for (packet=0; packet < GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH; packet++)
         {
           if (NULL == socket->write_handle->messages[packet]) break;
           if (GNUNET_YES != ackbitmap_is_bit_set 
@@ -1876,7 +1892,7 @@
       else      /* We have to call the write continuation callback now */
         {
           /* Free the packets */
-          for (packet=0; packet < 64; packet++)
+          for (packet=0; packet < GNUNET_STREAM_ACK_BITMAP_BIT_LENGTH; 
packet++)
             {
               GNUNET_free_non_null (socket->write_handle->messages[packet]);
             }
@@ -2501,6 +2517,9 @@
 {
   struct GNUNET_STREAM_IOReadHandle *read_handle;
   
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "%s()\n", __func__);
+
   /* Return NULL if there is already a read handle; the user has to cancel that
   first before continuing or has to wait until it is completed */
   if (NULL != socket->read_handle) return NULL;
@@ -2522,6 +2541,8 @@
   socket->read_io_timeout_task = GNUNET_SCHEDULER_add_delayed (timeout,
                                                                
&read_io_timeout,
                                                                socket);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "%s() END\n", __func__);
   return read_handle;
 }
 




reply via email to

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