X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprotocol_auth.c;h=263a131729f29ae7b27d03bfbe21f08f9d7e83cd;hb=38a4eb4ebc730d805fcab9d64fe988be42a99122;hp=d7cbbd4867a77e563d3fbee3c219a5f3124b277a;hpb=d93d4f9dbd09bc5e53a9b5eeb1cc94939fee32bc;p=tinc diff --git a/src/protocol_auth.c b/src/protocol_auth.c index d7cbbd48..263a1317 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -44,6 +44,7 @@ #include "random.h" #include "compression.h" #include "proxy.h" +#include "address_cache.h" #include "ed25519/sha512.h" #include "keys.h" @@ -82,6 +83,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; @@ -138,6 +140,22 @@ static bool finalize_invitation(connection_t *c, const char *data, uint16_t len) logger(DEBUG_CONNECTIONS, LOG_INFO, "Key successfully received from %s (%s)", c->name, c->hostname); + if(!c->node) { + c->node = lookup_node(c->name); + } + + if(!c->node) { + c->node = new_node(c->name); + c->node->connection = c; + node_add(c->node); + } + + if(!c->node->address_cache) { + c->node->address_cache = open_address_cache(c->node); + } + + add_recent_address(c->node->address_cache, &c->address); + // Call invitation-accepted script environment_t env; char *address, *port; @@ -935,8 +953,7 @@ bool ack_h(connection_t *c, const char *request) { n = lookup_node(c->name); if(!n) { - n = new_node(); - n->name = xstrdup(c->name); + n = new_node(c->name); node_add(n); } else { if(n->connection) {