Don't keep an address cache in an outgoing_t.
[tinc] / src / protocol_misc.c
index d4a45e8..050e30a 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "system.h"
 
+#include "address_cache.h"
 #include "conf.h"
 #include "connection.h"
 #include "logger.h"
@@ -43,6 +44,8 @@ bool send_termreq(connection_t *c) {
 }
 
 bool termreq_h(connection_t *c, const char *request) {
+       (void)c;
+       (void)request;
        return false;
 }
 
@@ -54,6 +57,7 @@ bool send_ping(connection_t *c) {
 }
 
 bool ping_h(connection_t *c, const char *request) {
+       (void)request;
        return send_pong(c);
 }
 
@@ -62,20 +66,14 @@ bool send_pong(connection_t *c) {
 }
 
 bool pong_h(connection_t *c, const char *request) {
+       (void)request;
        c->status.pinged = false;
 
        /* Successful connection, reset timeout if this is an outgoing connection. */
 
-       if(c->outgoing) {
+       if(c->outgoing && c->outgoing->timeout) {
                c->outgoing->timeout = 0;
-               c->outgoing->cfg = NULL;
-
-               if(c->outgoing->ai) {
-                       freeaddrinfo(c->outgoing->ai);
-               }
-
-               c->outgoing->ai = NULL;
-               c->outgoing->aip = NULL;
+               reset_address_cache(c->outgoing->node->address_cache, &c->address);
        }
 
        return true;