diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-03-04 05:30:26 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-03-04 05:30:26 +0000 |
commit | d12a1fa0032e334b13d3a24e3f7e54ff4584740a (patch) | |
tree | 824f4f66014e79fba23663fe4170e56e6bb0af3e /src/core | |
parent | 201654f3840a21bdba43de7bcc09b951aee146f1 (diff) | |
download | gnunet-d12a1fa0032e334b13d3a24e3f7e54ff4584740a.tar.gz gnunet-d12a1fa0032e334b13d3a24e3f7e54ff4584740a.zip |
-trying to fix rekeying (#2812)
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/gnunet-service-core_kx.c | 15 | ||||
-rw-r--r-- | src/core/gnunet-service-core_neighbours.c | 1 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c index 19fbfb182..ca40d56a0 100644 --- a/src/core/gnunet-service-core_kx.c +++ b/src/core/gnunet-service-core_kx.c | |||
@@ -693,6 +693,7 @@ GSC_KX_start (const struct GNUNET_PeerIdentity *pid) | |||
693 | void | 693 | void |
694 | GSC_KX_stop (struct GSC_KeyExchangeInfo *kx) | 694 | GSC_KX_stop (struct GSC_KeyExchangeInfo *kx) |
695 | { | 695 | { |
696 | GSC_SESSIONS_end (&kx->peer); | ||
696 | GNUNET_STATISTICS_update (GSC_stats, gettext_noop ("# key exchanges stopped"), | 697 | GNUNET_STATISTICS_update (GSC_stats, gettext_noop ("# key exchanges stopped"), |
697 | 1, GNUNET_NO); | 698 | 1, GNUNET_NO); |
698 | if (kx->retry_set_key_task != GNUNET_SCHEDULER_NO_TASK) | 699 | if (kx->retry_set_key_task != GNUNET_SCHEDULER_NO_TASK) |
@@ -838,8 +839,7 @@ GSC_KX_handle_ephemeral_key (struct GSC_KeyExchangeInfo *kx, | |||
838 | GNUNET_break_op (0); | 839 | GNUNET_break_op (0); |
839 | break; | 840 | break; |
840 | case KX_STATE_KEY_SENT: | 841 | case KX_STATE_KEY_SENT: |
841 | kx->status = KX_STATE_KEY_RECEIVED; | 842 | /* fine, need to send our key after updating our status, see below */ |
842 | send_key (kx); | ||
843 | break; | 843 | break; |
844 | case KX_STATE_KEY_RECEIVED: | 844 | case KX_STATE_KEY_RECEIVED: |
845 | case KX_STATE_UP: | 845 | case KX_STATE_UP: |
@@ -855,22 +855,31 @@ GSC_KX_handle_ephemeral_key (struct GSC_KeyExchangeInfo *kx, | |||
855 | { | 855 | { |
856 | case KX_STATE_DOWN: | 856 | case KX_STATE_DOWN: |
857 | kx->status = KX_STATE_KEY_RECEIVED; | 857 | kx->status = KX_STATE_KEY_RECEIVED; |
858 | if (KX_STATE_KEY_SENT == sender_status) | ||
859 | send_key (kx); | ||
858 | send_ping (kx); | 860 | send_ping (kx); |
859 | break; | 861 | break; |
860 | case KX_STATE_KEY_SENT: | 862 | case KX_STATE_KEY_SENT: |
861 | kx->status = KX_STATE_KEY_RECEIVED; | 863 | kx->status = KX_STATE_KEY_RECEIVED; |
864 | if (KX_STATE_KEY_SENT == sender_status) | ||
865 | send_key (kx); | ||
862 | send_ping (kx); | 866 | send_ping (kx); |
863 | break; | 867 | break; |
864 | case KX_STATE_KEY_RECEIVED: | 868 | case KX_STATE_KEY_RECEIVED: |
869 | if (KX_STATE_KEY_SENT == sender_status) | ||
870 | send_key (kx); | ||
865 | send_ping (kx); | 871 | send_ping (kx); |
866 | break; | 872 | break; |
867 | case KX_STATE_UP: | 873 | case KX_STATE_UP: |
868 | kx->status = KX_STATE_REKEY_SENT; | 874 | kx->status = KX_STATE_REKEY_SENT; |
875 | if (KX_STATE_KEY_SENT == sender_status) | ||
876 | send_key (kx); | ||
869 | /* we got a new key, need to reconfirm! */ | 877 | /* we got a new key, need to reconfirm! */ |
870 | send_ping (kx); | 878 | send_ping (kx); |
871 | break; | 879 | break; |
872 | case KX_STATE_REKEY_SENT: | 880 | case KX_STATE_REKEY_SENT: |
873 | kx->status = KX_STATE_REKEY_SENT; | 881 | if (KX_STATE_KEY_SENT == sender_status) |
882 | send_key (kx); | ||
874 | /* we got a new key, need to reconfirm! */ | 883 | /* we got a new key, need to reconfirm! */ |
875 | send_ping (kx); | 884 | send_ping (kx); |
876 | break; | 885 | break; |
diff --git a/src/core/gnunet-service-core_neighbours.c b/src/core/gnunet-service-core_neighbours.c index f0b38610a..2065faa94 100644 --- a/src/core/gnunet-service-core_neighbours.c +++ b/src/core/gnunet-service-core_neighbours.c | |||
@@ -162,7 +162,6 @@ free_neighbour (struct Neighbour *n) | |||
162 | gettext_noop | 162 | gettext_noop |
163 | ("# sessions terminated by transport disconnect"), | 163 | ("# sessions terminated by transport disconnect"), |
164 | 1, GNUNET_NO); | 164 | 1, GNUNET_NO); |
165 | GSC_SESSIONS_end (&n->peer); | ||
166 | if (NULL != n->kxinfo) | 165 | if (NULL != n->kxinfo) |
167 | { | 166 | { |
168 | GSC_KX_stop (n->kxinfo); | 167 | GSC_KX_stop (n->kxinfo); |