Add UDP_INFO protocol message.
[tinc] / src / protocol_key.c
index aaf0f33..c46c14c 100644 (file)
@@ -236,6 +236,13 @@ bool req_key_h(connection_t *c, const char *request) {
                return true;
        }
 
+       /* If this is a SPTPS packet, see if sending UDP info helps.
+          Note that we only do this if we're the destination or the static relay;
+          otherwise every hop would initiate its own UDP info message, resulting in elevated chatter. */
+
+       if(experimental && (reqno == REQ_KEY || reqno == REQ_SPTPS) && to->via == myself)
+               send_udp_info(myself, from);
+
        /* Check if this key request is for us */
 
        if(to == myself) {                      /* Yes */
@@ -303,6 +310,8 @@ bool send_ans_key(node_t *to) {
        to->received = 0;
        if(replaywin) memset(to->late, 0, replaywin);
 
+       to->status.validkey_in = true;
+
        return send_request(to->nexthop->connection, "%d %s %s %s %d %d %d %d", ANS_KEY,
                                                myself->name, to->name, key,
                                                cipher_get_nid(to->incipher),
@@ -410,7 +419,7 @@ bool ans_key_h(connection_t *c, const char *request) {
        }
 
 #ifdef DISABLE_LEGACY
-       logger(DEBUG_ALWAYS, LOG_ERR, "Node %s (%) uses legacy protocol!", from->name, from->hostname);
+       logger(DEBUG_ALWAYS, LOG_ERR, "Node %s (%s) uses legacy protocol!", from->name, from->hostname);
        return false;
 #else
        /* Check and lookup cipher and digest algorithms */