gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r26286 - gnunet/src/core


From: gnunet
Subject: [GNUnet-SVN] r26286 - gnunet/src/core
Date: Mon, 4 Mar 2013 06:30:26 +0100

Author: grothoff
Date: 2013-03-04 06:30:26 +0100 (Mon, 04 Mar 2013)
New Revision: 26286

Modified:
   gnunet/src/core/gnunet-service-core_kx.c
   gnunet/src/core/gnunet-service-core_neighbours.c
Log:
-trying to fix rekeying (#2812)

Modified: gnunet/src/core/gnunet-service-core_kx.c
===================================================================
--- gnunet/src/core/gnunet-service-core_kx.c    2013-03-04 05:12:14 UTC (rev 
26285)
+++ gnunet/src/core/gnunet-service-core_kx.c    2013-03-04 05:30:26 UTC (rev 
26286)
@@ -693,6 +693,7 @@
 void
 GSC_KX_stop (struct GSC_KeyExchangeInfo *kx)
 {
+  GSC_SESSIONS_end (&kx->peer);
   GNUNET_STATISTICS_update (GSC_stats, gettext_noop ("# key exchanges 
stopped"),
                             1, GNUNET_NO);
   if (kx->retry_set_key_task != GNUNET_SCHEDULER_NO_TASK)
@@ -838,8 +839,7 @@
     GNUNET_break_op (0);
     break;
   case KX_STATE_KEY_SENT:
-    kx->status = KX_STATE_KEY_RECEIVED;
-    send_key (kx);
+    /* fine, need to send our key after updating our status, see below */
     break;
   case KX_STATE_KEY_RECEIVED:
   case KX_STATE_UP: 
@@ -855,22 +855,31 @@
   {
   case KX_STATE_DOWN:
     kx->status = KX_STATE_KEY_RECEIVED;
+    if (KX_STATE_KEY_SENT == sender_status)
+      send_key (kx);
     send_ping (kx);
     break;
   case KX_STATE_KEY_SENT:
     kx->status = KX_STATE_KEY_RECEIVED;
+    if (KX_STATE_KEY_SENT == sender_status)
+      send_key (kx);
     send_ping (kx);
     break;
   case KX_STATE_KEY_RECEIVED:
+    if (KX_STATE_KEY_SENT == sender_status)
+      send_key (kx);
     send_ping (kx);
     break;
   case KX_STATE_UP: 
     kx->status = KX_STATE_REKEY_SENT;
+    if (KX_STATE_KEY_SENT == sender_status)
+      send_key (kx);
     /* we got a new key, need to reconfirm! */
     send_ping (kx);
     break;
   case KX_STATE_REKEY_SENT:
-    kx->status = KX_STATE_REKEY_SENT;
+    if (KX_STATE_KEY_SENT == sender_status)
+      send_key (kx);
     /* we got a new key, need to reconfirm! */
     send_ping (kx);
     break;

Modified: gnunet/src/core/gnunet-service-core_neighbours.c
===================================================================
--- gnunet/src/core/gnunet-service-core_neighbours.c    2013-03-04 05:12:14 UTC 
(rev 26285)
+++ gnunet/src/core/gnunet-service-core_neighbours.c    2013-03-04 05:30:26 UTC 
(rev 26286)
@@ -162,7 +162,6 @@
                             gettext_noop
                             ("# sessions terminated by transport disconnect"),
                             1, GNUNET_NO);
-  GSC_SESSIONS_end (&n->peer);
   if (NULL != n->kxinfo)
   {
     GSC_KX_stop (n->kxinfo);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]