diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-12-24 15:42:46 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-12-24 15:42:46 +0000 |
commit | 4195efabbf904a32039936b4711abef0575e7556 (patch) | |
tree | b5fb4b30a7401d2186f3ad74d205b60c38a78620 /src/core | |
parent | b479dddcac56ec8352b8730470ed6cdaf4b929c5 (diff) | |
download | gnunet-4195efabbf904a32039936b4711abef0575e7556.tar.gz gnunet-4195efabbf904a32039936b4711abef0575e7556.zip |
-fix possible assertion failure if rekeying is triggered on session that is not yet up
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/gnunet-service-core_kx.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/core/gnunet-service-core_kx.c b/src/core/gnunet-service-core_kx.c index e5e8d54aa..e899b6ded 100644 --- a/src/core/gnunet-service-core_kx.c +++ b/src/core/gnunet-service-core_kx.c | |||
@@ -1559,8 +1559,15 @@ do_rekey (void *cls, | |||
1559 | sign_ephemeral_key (); | 1559 | sign_ephemeral_key (); |
1560 | for (pos = kx_head; NULL != pos; pos = pos->next) | 1560 | for (pos = kx_head; NULL != pos; pos = pos->next) |
1561 | { | 1561 | { |
1562 | pos->status = KX_STATE_REKEY_SENT; | 1562 | if (KX_STATE_UP == pos->status) |
1563 | derive_session_keys (pos); | 1563 | { |
1564 | pos->status = KX_STATE_REKEY_SENT; | ||
1565 | derive_session_keys (pos); | ||
1566 | } | ||
1567 | if (KX_STATE_DOWN == pos->status) | ||
1568 | { | ||
1569 | pos->status = KX_STATE_KEY_SENT; | ||
1570 | } | ||
1564 | send_key (pos); | 1571 | send_key (pos); |
1565 | } | 1572 | } |
1566 | } | 1573 | } |