diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-03-04 05:47:46 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-03-04 05:47:46 +0000 |
commit | e914d958b8e1a904b6ddb22b23b8bac3a7ebc4fa (patch) | |
tree | 5e0bcdffdf1c8c2769c811eab44c8b3726a1dc20 /src/core | |
parent | d12a1fa0032e334b13d3a24e3f7e54ff4584740a (diff) | |
download | gnunet-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.c | 13 |
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; |