aboutsummaryrefslogtreecommitdiff
path: root/src/core/gnunet-service-core_kx.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2014-04-23 11:04:53 +0000
committerChristian Grothoff <christian@grothoff.org>2014-04-23 11:04:53 +0000
commita19683a4b76e10843c4e75db928bac5750c6430a (patch)
tree7aeff0c4d49b5f3750c569216e77912016fd5a81 /src/core/gnunet-service-core_kx.c
parent21bac846638fbbbe2b03672295d4f14fc3ceb839 (diff)
downloadgnunet-a19683a4b76e10843c4e75db928bac5750c6430a.tar.gz
gnunet-a19683a4b76e10843c4e75db928bac5750c6430a.zip
fix #3348: send typemap confirmation messages, perform faster typemap retransmissions for unconfirmed typemaps, restart retransmissions on reconnect
Diffstat (limited to 'src/core/gnunet-service-core_kx.c')
-rw-r--r--src/core/gnunet-service-core_kx.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c
index 79155a660..8f13dd111 100644
--- a/src/core/gnunet-service-core_kx.c
+++ b/src/core/gnunet-service-core_kx.c
@@ -821,13 +821,15 @@ GSC_KX_handle_ephemeral_key (struct GSC_KeyExchangeInfo *kx,
821 (GNUNET_CORE_KX_STATE_REKEY_SENT == kx->status) ) && 821 (GNUNET_CORE_KX_STATE_REKEY_SENT == kx->status) ) &&
822 (end_t.abs_value_us <= kx->foreign_key_expires.abs_value_us) ) 822 (end_t.abs_value_us <= kx->foreign_key_expires.abs_value_us) )
823 { 823 {
824 GNUNET_STATISTICS_update (GSC_stats, gettext_noop ("# old ephemeral keys ignored"), 824 GNUNET_STATISTICS_update (GSC_stats,
825 gettext_noop ("# old ephemeral keys ignored"),
825 1, GNUNET_NO); 826 1, GNUNET_NO);
826 return; 827 return;
827 } 828 }
828 start_t = GNUNET_TIME_absolute_ntoh (m->creation_time); 829 start_t = GNUNET_TIME_absolute_ntoh (m->creation_time);
829 830
830 GNUNET_STATISTICS_update (GSC_stats, gettext_noop ("# ephemeral keys received"), 831 GNUNET_STATISTICS_update (GSC_stats,
832 gettext_noop ("# ephemeral keys received"),
831 1, GNUNET_NO); 833 1, GNUNET_NO);
832 834
833 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 835 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -884,11 +886,17 @@ GSC_KX_handle_ephemeral_key (struct GSC_KeyExchangeInfo *kx,
884 break; 886 break;
885 case GNUNET_CORE_KX_STATE_KEY_SENT: 887 case GNUNET_CORE_KX_STATE_KEY_SENT:
886 /* fine, need to send our key after updating our status, see below */ 888 /* fine, need to send our key after updating our status, see below */
889 GSC_SESSIONS_reinit (&kx->peer);
887 break; 890 break;
888 case GNUNET_CORE_KX_STATE_KEY_RECEIVED: 891 case GNUNET_CORE_KX_STATE_KEY_RECEIVED:
892 /* other peer already got our key, but typemap did go down */
893 GSC_SESSIONS_reinit (&kx->peer);
894 break;
889 case GNUNET_CORE_KX_STATE_UP: 895 case GNUNET_CORE_KX_STATE_UP:
896 /* other peer already got our key, typemap NOT down */
897 break;
890 case GNUNET_CORE_KX_STATE_REKEY_SENT: 898 case GNUNET_CORE_KX_STATE_REKEY_SENT:
891 /* other peer already got our key */ 899 /* other peer already got our key, typemap NOT down */
892 break; 900 break;
893 default: 901 default:
894 GNUNET_break (0); 902 GNUNET_break (0);
@@ -1509,6 +1517,9 @@ deliver_message (void *cls,
1509 case GNUNET_MESSAGE_TYPE_CORE_COMPRESSED_TYPE_MAP: 1517 case GNUNET_MESSAGE_TYPE_CORE_COMPRESSED_TYPE_MAP:
1510 GSC_SESSIONS_set_typemap (dmc->peer, m); 1518 GSC_SESSIONS_set_typemap (dmc->peer, m);
1511 return GNUNET_OK; 1519 return GNUNET_OK;
1520 case GNUNET_MESSAGE_TYPE_CORE_CONFIRM_TYPE_MAP:
1521 GSC_SESSIONS_confirm_typemap (dmc->peer, m);
1522 return GNUNET_OK;
1512 default: 1523 default:
1513 GSC_CLIENTS_deliver_message (dmc->peer, m, 1524 GSC_CLIENTS_deliver_message (dmc->peer, m,
1514 ntohs (m->size), 1525 ntohs (m->size),