gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [gnunet] 01/03: provide stricter assurances about when we c


From: gnunet
Subject: [GNUnet-SVN] [gnunet] 01/03: provide stricter assurances about when we call ready_cb, avoiding supurious calls that merely reinforce what tunnel already knows about the connection state
Date: Sun, 29 Jan 2017 14:10:06 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository gnunet.

commit ae117b6b4a7d98948b9fabbe961abbc45f00f6bd
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Jan 29 13:09:48 2017 +0100

    provide stricter assurances about when we call ready_cb, avoiding supurious 
calls that merely reinforce what tunnel already knows about the connection state
---
 src/cadet/gnunet-service-cadet-new_connection.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/cadet/gnunet-service-cadet-new_connection.c 
b/src/cadet/gnunet-service-cadet-new_connection.c
index 11044d9e6..b894c26f2 100644
--- a/src/cadet/gnunet-service-cadet-new_connection.c
+++ b/src/cadet/gnunet-service-cadet-new_connection.c
@@ -345,6 +345,8 @@ GCC_handle_connection_create_ack (struct CadetConnection 
*cc)
        GCC_2s (cc),
        cc->state,
        (GNUNET_YES == cc->mqm_ready) ? "MQM ready" : "MQM busy");
+  if (CADET_CONNECTION_READY == cc->state)
+    return; /* Duplicate ACK, ignore */
   if (NULL != cc->task)
   {
     GNUNET_SCHEDULER_cancel (cc->task);
@@ -522,8 +524,9 @@ GCC_handle_duplicate_create (struct CadetConnection *cc)
          (GNUNET_YES == cc->mqm_ready) ? "MQM ready" : "MQM busy");
     /* Tell tunnel that we are not ready for transmission anymore
        (until CREATE_ACK is done) */
-    cc->ready_cb (cc->ready_cb_cls,
-                  GNUNET_NO);
+    if (CADET_CONNECTION_READY == cc->state)
+      cc->ready_cb (cc->ready_cb_cls,
+                    GNUNET_NO);
     /* Revert back to the state of having only received the 'CREATE',
        and immediately proceed to send the CREATE_ACK. */
     cc->state = CADET_CONNECTION_CREATE_RECEIVED;
@@ -566,7 +569,6 @@ manage_first_hop_mq (void *cls,
     LOG (GNUNET_ERROR_TYPE_DEBUG,
          "Core MQ for %s went down\n",
          GCC_2s (cc));
-    cc->mqm_ready = GNUNET_NO;
     cc->state = CADET_CONNECTION_NEW;
     cc->retry_delay = GNUNET_TIME_UNIT_ZERO;
     if (NULL != cc->task)
@@ -574,8 +576,13 @@ manage_first_hop_mq (void *cls,
       GNUNET_SCHEDULER_cancel (cc->task);
       cc->task = NULL;
     }
-    cc->ready_cb (cc->ready_cb_cls,
-                  GNUNET_NO);
+    if (GNUNET_YES == cc->mqm_ready)
+    {
+      cc->mqm_ready = GNUNET_NO;
+      if (CADET_CONNECTION_READY == cc->state)
+        cc->ready_cb (cc->ready_cb_cls,
+                      GNUNET_NO);
+    }
     return;
   }
 

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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