[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,
¤t_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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r35358 - gnunet/src/core,
gnunet <=