X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprotocol_auth.c;h=d7cbbd4867a77e563d3fbee3c219a5f3124b277a;hb=d93d4f9dbd09bc5e53a9b5eeb1cc94939fee32bc;hp=211d908358540b9d4259f7bf8626c0c7a6bd0d34;hpb=a5c6c6ea1ab657d83a4d8b064ac9bfa9c16adf63;p=tinc diff --git a/src/protocol_auth.c b/src/protocol_auth.c index 211d9083..d7cbbd48 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -94,7 +94,7 @@ bool send_id(connection_t *c) { int minor = 0; if(experimental) { - if(c->outgoing && !read_ecdsa_public_key(&c->ecdsa, &c->config_tree, c->name)) { + if(c->outgoing && !ecdsa_active(c->ecdsa) && !(c->ecdsa = read_ecdsa_public_key(&c->config_tree, c->name))) { minor = 1; } else { minor = myself->connection->protocol_minor; @@ -399,8 +399,8 @@ bool id_h(connection_t *c, const char *request) { return false; } - if(experimental) { - read_ecdsa_public_key(&c->ecdsa, &c->config_tree, c->name); + if(experimental && !ecdsa_active(c->ecdsa)) { + c->ecdsa = read_ecdsa_public_key(&c->config_tree, c->name); } /* Ignore failures if no key known yet */ @@ -880,7 +880,7 @@ static bool upgrade_h(connection_t *c, const char *request) { return false; } - if(ecdsa_active(c->ecdsa) || read_ecdsa_public_key(&c->ecdsa, &c->config_tree, c->name)) { + if(ecdsa_active(c->ecdsa) || (c->ecdsa = read_ecdsa_public_key(&c->config_tree, c->name))) { char *knownkey = ecdsa_get_base64_public_key(c->ecdsa); bool different = strcmp(knownkey, pubkey); free(knownkey);