diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-04-23 11:04:53 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-04-23 11:04:53 +0000 |
commit | a19683a4b76e10843c4e75db928bac5750c6430a (patch) | |
tree | 7aeff0c4d49b5f3750c569216e77912016fd5a81 /src/core/gnunet-service-core_kx.c | |
parent | 21bac846638fbbbe2b03672295d4f14fc3ceb839 (diff) | |
download | gnunet-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.c | 17 |
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), |