gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r31056 - gnunet/src/mesh
Date: Thu, 5 Dec 2013 03:46:57 +0100

Author: bartpolot
Date: 2013-12-05 03:46:57 +0100 (Thu, 05 Dec 2013)
New Revision: 31056

Modified:
   gnunet/src/mesh/gnunet-service-mesh_channel.c
Log:
- treat data as ACK on the destination end of a channel


Modified: gnunet/src/mesh/gnunet-service-mesh_channel.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh_channel.c       2013-12-05 02:13:36 UTC 
(rev 31055)
+++ gnunet/src/mesh/gnunet-service-mesh_channel.c       2013-12-05 02:46:57 UTC 
(rev 31056)
@@ -1827,6 +1827,23 @@
     return;
   }
 
+  if (MESH_CHANNEL_READY != ch->state)
+  {
+    if (GNUNET_NO == fwd)
+    {
+      /* If we are the root, this means the other peer has sent traffic before
+       * receiving our ACK. Even if the SYNACK goes missing, no traffic should
+       * be sent before the ACK.
+       */
+      GNUNET_break_op (0);
+      return;
+    }
+    /* If we are the dest, this means that the SYNACK got to the root but
+     * the ACK went missing. Treat this as an ACK.
+     */
+    channel_confirm (ch, GNUNET_NO);
+  }
+
   GNUNET_STATISTICS_update (stats, "# data received", 1, GNUNET_NO);
 
   mid = ntohl (msg->mid);
@@ -2034,6 +2051,7 @@
       LOG (GNUNET_ERROR_TYPE_DEBUG, "!!! Not Reliable\n");
 
     send_client_create (ch);
+    ch->state =  MESH_CHANNEL_SENT;
   }
 
   send_ack (ch, GNUNET_YES);




reply via email to

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