From a74aeeba59eb8cb0e90e748913219f2d829323ff Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Thu, 12 Dec 2013 15:01:43 +0000 Subject: fix for core key exchange --- src/core/gnunet-service-core_kx.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/core') diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c index 48e70eec5..b3fd7f3f6 100644 --- a/src/core/gnunet-service-core_kx.c +++ b/src/core/gnunet-service-core_kx.c @@ -676,15 +676,22 @@ GSC_KX_start (const struct GNUNET_PeerIdentity *pid) GNUNET_CRYPTO_hash (pid, sizeof (struct GNUNET_PeerIdentity), &h1); GNUNET_CRYPTO_hash (&GSC_my_identity, sizeof (struct GNUNET_PeerIdentity), &h2); + kx->status = KX_STATE_KEY_SENT; if (0 < GNUNET_CRYPTO_hash_cmp (&h1, &h2)) { /* peer with "lower" identity starts KX, otherwise we typically end up with both peers starting the exchange and transmit the 'set key' message twice */ - kx->status = KX_STATE_KEY_SENT; send_key (kx); } + else + { + /* peer with "higher" identity starts a delayed KX, if the "lower" peer + * does not start a KX since he sees no reasons to do so */ + kx->retry_set_key_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, + &set_key_retry_task, kx); + } return kx; } -- cgit v1.2.3