Always try next Address when an outgoing connection fails to authenticate.
[tinc] / src / net.c
index fc9ec57..0496a86 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -1,7 +1,7 @@
 /*
     net.c -- most of the network code
     Copyright (C) 1998-2005 Ivo Timmermans,
-                  2000-2011 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2012 Guus Sliepen <guus@tinc-vpn.org>
                   2006      Scott Lamb <slamb@slamb.org>
                  2011      Loïc Grenié <loic.grenie@gmail.com>
 
@@ -204,18 +204,14 @@ void terminate_connection(connection_t *c, bool report) {
                }
        }
 
+       free_connection_partially(c);
+
        /* Check if this was our outgoing connection */
 
        if(c->outgoing) {
-               retry_outgoing(c->outgoing);
-               c->outgoing = NULL;
+               c->status.remove = false;
+               do_outgoing_connection(c);      
        }
-
-       free(c->outbuf);
-       c->outbuf = NULL;
-       c->outbuflen = 0;
-       c->outbufsize = 0;
-       c->outbufstart = 0;
 }
 
 /*
@@ -343,7 +339,7 @@ static void check_network_activity(fd_set * readset, fd_set * writeset) {
 
        for(i = 0; i < listen_sockets; i++) {
                if(FD_ISSET(listen_socket[i].udp, readset))
-                       handle_incoming_vpn_data(listen_socket[i].udp);
+                       handle_incoming_vpn_data(i);
 
                if(FD_ISSET(listen_socket[i].tcp, readset))
                        handle_new_meta_connection(listen_socket[i].tcp);