diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-03-08 20:25:17 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-03-08 20:25:17 +0100 |
commit | 11f1c9adcaeb4077c4fdab120eb6197795a2a872 (patch) | |
tree | c4425f7175e6374cd089fddf79bf9f614f301f16 /src/protocol_ec25519_fhmqvc.c | |
parent | 4e9b2a8819c7062ad052cd6c549db1d0fbed001d (diff) | |
download | fastd-11f1c9adcaeb4077c4fdab120eb6197795a2a872.tar fastd-11f1c9adcaeb4077c4fdab120eb6197795a2a872.zip |
Allow disabling previously enabled peers
Diffstat (limited to 'src/protocol_ec25519_fhmqvc.c')
-rw-r--r-- | src/protocol_ec25519_fhmqvc.c | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/protocol_ec25519_fhmqvc.c b/src/protocol_ec25519_fhmqvc.c index 951cbbb..d804eac 100644 --- a/src/protocol_ec25519_fhmqvc.c +++ b/src/protocol_ec25519_fhmqvc.c @@ -160,28 +160,33 @@ static fastd_protocol_config_t* protocol_init(fastd_context_t *ctx) { } static void protocol_peer_configure(fastd_context_t *ctx, fastd_peer_config_t *peer_conf) { - ecc_int256_t key; + if (!peer_conf->protocol_config) { + if (!peer_conf->key) { + pr_warn(ctx, "no key configured for `%s', disabling peer", peer_conf->name); + peer_conf->enabled = false; + return; + } - if (!peer_conf->key) { - pr_warn(ctx, "no key configured for `%s', disabling peer", peer_conf->name); - peer_conf->enabled = false; - return; - } + ecc_int256_t key; + if (!read_key(key.p, peer_conf->key)) { + pr_warn(ctx, "invalid key configured for `%s', disabling peer", peer_conf->name); + peer_conf->enabled = false; + return; + } - if (!read_key(key.p, peer_conf->key)) { - pr_warn(ctx, "invalid key configured for `%s', disabling peer", peer_conf->name); - peer_conf->enabled = false; - return; - } + peer_conf->protocol_config = malloc(sizeof(fastd_protocol_peer_config_t)); + peer_conf->protocol_config->public_key = key; - if (memcmp(key.p, ctx->conf->protocol_config->public_key.p, 32) == 0) { - pr_debug(ctx, "found own key as `%s', ignoring peer", peer_conf->name); + if (memcmp(peer_conf->protocol_config->public_key.p, ctx->conf->protocol_config->public_key.p, 32) == 0) { + pr_debug(ctx, "found own key as `%s', ignoring peer", peer_conf->name); + peer_conf->enabled = false; + return; + } + } + else if (memcmp(peer_conf->protocol_config->public_key.p, ctx->conf->protocol_config->public_key.p, 32) == 0) { peer_conf->enabled = false; return; } - - peer_conf->protocol_config = malloc(sizeof(fastd_protocol_peer_config_t)); - peer_conf->protocol_config->public_key = key; } static void init_protocol_state(fastd_context_t *ctx) { |