Always try next Address when an outgoing connection fails to authenticate.
[tinc] / src / protocol_misc.c
index 6f7ab03..8818d02 100644 (file)
@@ -111,8 +111,14 @@ bool pong_h(connection_t *c) {
 
        /* Succesful connection, reset timeout if this is an outgoing connection. */
 
-       if(c->outgoing)
+       if(c->outgoing) {
                c->outgoing->timeout = 0;
+               c->outgoing->cfg = NULL;
+               if(c->outgoing->ai)
+                       freeaddrinfo(c->outgoing->ai);
+               c->outgoing->ai = NULL;
+               c->outgoing->aip = NULL;
+       }
 
        return true;
 }
@@ -129,7 +135,7 @@ bool send_tcppacket(connection_t *c, const vpn_packet_t *packet) {
        if(!send_request(c, "%d %hd", PACKET, packet->len))
                return false;
 
-       return send_meta(c, (char *)packet->data, packet->len);
+       return send_meta(c, (char *)packet->data, packet->len) && flush_meta(c);
 }
 
 bool tcppacket_h(connection_t *c) {