Add stricter checks for netnames.
[tinc] / src / protocol_key.c
index b409a35..d24d4ac 100644 (file)
@@ -400,7 +400,7 @@ bool ans_key_h(connection_t *c, const char *request) {
                        return true;
                }
 
-               if(!*address && from->address.sa.sa_family != AF_UNSPEC) {
+               if(!*address && from->address.sa.sa_family != AF_UNSPEC && to->minmtu) {
                        char *address, *port;
                        logger(DEBUG_PROTOCOL, LOG_DEBUG, "Appending reflexive UDP address to ANS_KEY from %s to %s", from->name, to->name);
                        sockaddr2str(&from->address, &address, &port);
@@ -418,7 +418,7 @@ bool ans_key_h(connection_t *c, const char *request) {
        cipher_close(from->outcipher);
        digest_close(from->outdigest);
 #endif
-       from->status.validkey = false;
+       if (!from->status.sptps) from->status.validkey = false;
 
        if(compression < 0 || compression > 11) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Node %s (%s) uses bogus compression level!", from->name, from->hostname);