Use static buffers for recvmmsg(), initialize them only as needed.
[tinc] / src / protocol_key.c
index 83851f2..dd54704 100644 (file)
@@ -36,6 +36,7 @@
 static bool mykeyused = false;
 
 void send_key_changed(void) {
+#ifndef DISABLE_LEGACY
        send_request(everyone, "%d %x %s", KEY_CHANGED, rand(), myself->name);
 
        /* Immediately send new keys to directly connected nodes to keep UDP mappings alive */
@@ -43,6 +44,7 @@ void send_key_changed(void) {
        for list_each(connection_t, c, connection_list)
                if(c->edge && c->node && c->node->status.reachable && !c->node->status.sptps)
                        send_ans_key(c->node);
+#endif
 
        /* Force key exchange for connections using SPTPS */
 
@@ -416,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);