aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-03-04 05:30:26 +0000
committerChristian Grothoff <christian@grothoff.org>2013-03-04 05:30:26 +0000
commitd12a1fa0032e334b13d3a24e3f7e54ff4584740a (patch)
tree824f4f66014e79fba23663fe4170e56e6bb0af3e /src/core
parent201654f3840a21bdba43de7bcc09b951aee146f1 (diff)
downloadgnunet-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.c15
-rw-r--r--src/core/gnunet-service-core_neighbours.c1
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)
693void 693void
694GSC_KX_stop (struct GSC_KeyExchangeInfo *kx) 694GSC_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);