summaryrefslogtreecommitdiffstats
path: root/src/protocol_ec25519_fhmqvc.c
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-03-08 20:25:17 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-03-08 20:25:17 +0100
commit11f1c9adcaeb4077c4fdab120eb6197795a2a872 (patch)
treec4425f7175e6374cd089fddf79bf9f614f301f16 /src/protocol_ec25519_fhmqvc.c
parent4e9b2a8819c7062ad052cd6c549db1d0fbed001d (diff)
downloadfastd-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.c37
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) {