gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r35358 - gnunet/src/core


From: gnunet
Subject: [GNUnet-SVN] r35358 - gnunet/src/core
Date: Sun, 8 Mar 2015 14:11:49 +0100

Author: grothoff
Date: 2015-03-08 14:11:48 +0100 (Sun, 08 Mar 2015)
New Revision: 35358

Modified:
   gnunet/src/core/gnunet-service-core_kx.c
Log:
-try to avoid being stuck with key sent/received if PING/PONGs are lost

Modified: gnunet/src/core/gnunet-service-core_kx.c
===================================================================
--- gnunet/src/core/gnunet-service-core_kx.c    2015-03-07 20:41:48 UTC (rev 
35357)
+++ gnunet/src/core/gnunet-service-core_kx.c    2015-03-08 13:11:48 UTC (rev 
35358)
@@ -789,6 +789,10 @@
 static void
 send_ping (struct GSC_KeyExchangeInfo *kx)
 {
+  GNUNET_STATISTICS_update (GSC_stats,
+                            gettext_noop ("# PING messages transmitted"),
+                            1,
+                            GNUNET_NO);
   GSC_NEIGHBOURS_transmit (&kx->peer,
                            &kx->ping.header,
                            MIN_PING_FREQUENCY);
@@ -955,7 +959,8 @@
     monitor_notify_all (kx);
     if (GNUNET_CORE_KX_STATE_KEY_SENT == sender_status)
       send_key (kx);
-    send_ping (kx);
+    else
+      send_ping (kx);
     break;
   case GNUNET_CORE_KX_STATE_KEY_SENT:
     GNUNET_assert (NULL == kx->keep_alive_task);
@@ -963,27 +968,29 @@
     monitor_notify_all (kx);
     if (GNUNET_CORE_KX_STATE_KEY_SENT == sender_status)
       send_key (kx);
-    send_ping (kx);
+    else
+      send_ping (kx);
     break;
   case GNUNET_CORE_KX_STATE_KEY_RECEIVED:
     GNUNET_assert (NULL == kx->keep_alive_task);
     if (GNUNET_CORE_KX_STATE_KEY_SENT == sender_status)
       send_key (kx);
-    send_ping (kx);
+    else
+      send_ping (kx);
     break;
   case GNUNET_CORE_KX_STATE_UP:
     kx->status = GNUNET_CORE_KX_STATE_REKEY_SENT;
     monitor_notify_all (kx);
     if (GNUNET_CORE_KX_STATE_KEY_SENT == sender_status)
       send_key (kx);
-    /* we got a new key, need to reconfirm! */
-    send_ping (kx);
+    else
+      send_ping (kx);
     break;
   case GNUNET_CORE_KX_STATE_REKEY_SENT:
     if (GNUNET_CORE_KX_STATE_KEY_SENT == sender_status)
       send_key (kx);
-    /* we got a new key, need to reconfirm! */
-    send_ping (kx);
+    else
+      send_ping (kx);
     break;
   default:
     GNUNET_break (0);
@@ -1125,9 +1132,7 @@
                             1,
                             GNUNET_NO);
   setup_fresh_ping (kx);
-  GSC_NEIGHBOURS_transmit (&kx->peer,
-                           &kx->ping.header,
-                           kx->set_key_retry_frequency);
+  send_ping (kx);
   retry =
       GNUNET_TIME_relative_max (GNUNET_TIME_relative_divide (left, 2),
                                 MIN_PING_FREQUENCY);
@@ -1322,6 +1327,8 @@
   GSC_NEIGHBOURS_transmit (&kx->peer,
                            &current_ekm.header,
                            kx->set_key_retry_frequency);
+  if (GNUNET_CORE_KX_STATE_KEY_SENT != kx->status)
+    send_ping (kx);
   kx->retry_set_key_task =
       GNUNET_SCHEDULER_add_delayed (kx->set_key_retry_frequency,
                                     &set_key_retry_task, kx);




reply via email to

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