X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprotocol_auth.c;h=7a3e6dd0e3bf1510a52e11e77aba8b4df869fc62;hb=72091d5c770856870bb8cd51bcc5641078c7562c;hp=211d908358540b9d4259f7bf8626c0c7a6bd0d34;hpb=a5c6c6ea1ab657d83a4d8b064ac9bfa9c16adf63;p=tinc diff --git a/src/protocol_auth.c b/src/protocol_auth.c index 211d9083..7a3e6dd0 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -82,6 +82,7 @@ static bool send_proxyrequest(connection_t *c) { case PROXY_EXEC: return true; + case PROXY_NONE: default: logger(DEBUG_ALWAYS, LOG_ERR, "Unknown proxy type"); return false; @@ -94,7 +95,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 +400,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 +881,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);