aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-03-04 05:47:46 +0000
committerChristian Grothoff <christian@grothoff.org>2013-03-04 05:47:46 +0000
commite914d958b8e1a904b6ddb22b23b8bac3a7ebc4fa (patch)
tree5e0bcdffdf1c8c2769c811eab44c8b3726a1dc20 /src/core
parentd12a1fa0032e334b13d3a24e3f7e54ff4584740a (diff)
downloadgnunet-e914d958b8e1a904b6ddb22b23b8bac3a7ebc4fa.tar.gz
gnunet-e914d958b8e1a904b6ddb22b23b8bac3a7ebc4fa.zip
-trying to fix rekeying (#2812)
Diffstat (limited to 'src/core')
-rw-r--r--src/core/gnunet-service-core_kx.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c
index ca40d56a0..ac3da79f6 100644
--- a/src/core/gnunet-service-core_kx.c
+++ b/src/core/gnunet-service-core_kx.c
@@ -49,7 +49,7 @@
49/** 49/**
50 * How often do we rekey? 50 * How often do we rekey?
51 */ 51 */
52#define REKEY_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 12) 52#define REKEY_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 1)
53 53
54/** 54/**
55 * What time difference do we tolerate? 55 * What time difference do we tolerate?
@@ -854,18 +854,21 @@ GSC_KX_handle_ephemeral_key (struct GSC_KeyExchangeInfo *kx,
854 switch (kx->status) 854 switch (kx->status)
855 { 855 {
856 case KX_STATE_DOWN: 856 case KX_STATE_DOWN:
857 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == kx->keep_alive_task);
857 kx->status = KX_STATE_KEY_RECEIVED; 858 kx->status = KX_STATE_KEY_RECEIVED;
858 if (KX_STATE_KEY_SENT == sender_status) 859 if (KX_STATE_KEY_SENT == sender_status)
859 send_key (kx); 860 send_key (kx);
860 send_ping (kx); 861 send_ping (kx);
861 break; 862 break;
862 case KX_STATE_KEY_SENT: 863 case KX_STATE_KEY_SENT:
864 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == kx->keep_alive_task);
863 kx->status = KX_STATE_KEY_RECEIVED; 865 kx->status = KX_STATE_KEY_RECEIVED;
864 if (KX_STATE_KEY_SENT == sender_status) 866 if (KX_STATE_KEY_SENT == sender_status)
865 send_key (kx); 867 send_key (kx);
866 send_ping (kx); 868 send_ping (kx);
867 break; 869 break;
868 case KX_STATE_KEY_RECEIVED: 870 case KX_STATE_KEY_RECEIVED:
871 GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == kx->keep_alive_task);
869 if (KX_STATE_KEY_SENT == sender_status) 872 if (KX_STATE_KEY_SENT == sender_status)
870 send_key (kx); 873 send_key (kx);
871 send_ping (kx); 874 send_ping (kx);
@@ -1312,10 +1315,18 @@ GSC_KX_handle_encrypted_message (struct GSC_KeyExchangeInfo *kx,
1312 } 1315 }
1313 if (0 == GNUNET_TIME_absolute_get_remaining (kx->foreign_key_expires).rel_value) 1316 if (0 == GNUNET_TIME_absolute_get_remaining (kx->foreign_key_expires).rel_value)
1314 { 1317 {
1318 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
1319 _("Session to peer `%s' went down due to key expiration (should not happen)\n"),
1320 GNUNET_i2s (&kx->peer));
1315 GNUNET_STATISTICS_update (GSC_stats, 1321 GNUNET_STATISTICS_update (GSC_stats,
1316 gettext_noop ("# sessions terminated by key expiration"), 1322 gettext_noop ("# sessions terminated by key expiration"),
1317 1, GNUNET_NO); 1323 1, GNUNET_NO);
1318 GSC_SESSIONS_end (&kx->peer); 1324 GSC_SESSIONS_end (&kx->peer);
1325 if (GNUNET_SCHEDULER_NO_TASK != kx->keep_alive_task)
1326 {
1327 GNUNET_SCHEDULER_cancel (kx->keep_alive_task);
1328 kx->keep_alive_task = GNUNET_SCHEDULER_NO_TASK;
1329 }
1319 kx->status = KX_STATE_KEY_SENT; 1330 kx->status = KX_STATE_KEY_SENT;
1320 send_key (kx); 1331 send_key (kx);
1321 return; 1332 return;