Avoid connecting to another node twice, and check name of outgoing connections.
authorGuus Sliepen <guus@tinc-vpn.org>
Wed, 31 Oct 2001 20:22:52 +0000 (20:22 +0000)
committerGuus Sliepen <guus@tinc-vpn.org>
Wed, 31 Oct 2001 20:22:52 +0000 (20:22 +0000)
src/net.c

index 230f2baa90e1c53597ed6f9303b6730e9bd6e752..8c3f9a08c4b7ae627753f632f91d1bdc78acc3cb 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: net.c,v 1.35.4.144 2001/10/31 12:50:24 guus Exp $
+    $Id: net.c,v 1.35.4.145 2001/10/31 20:22:52 guus Exp $
 */
 
 #include "config.h"
@@ -439,8 +439,19 @@ cp
 int setup_outgoing_connection(char *name)
 {
   connection_t *c;
+  node_t *n;
   struct hostent *h;
 cp
+  n = lookup_node(name);
+  
+  if(n)
+    if(n->connection)
+      {
+        if(debug_lvl >= DEBUG_CONNECTIONS)       
+          syslog(LOG_INFO, _("Already connected to %s"), name);
+        return 0;
+      }
+
   c = new_connection();
   c->name = xstrdup(name);
 
@@ -1096,6 +1107,12 @@ cp
       get_config_string(cfg, &name);
       cfg = lookup_config_next(config_tree, cfg);  /* Next time skip to next ConnectTo line */
 
+      if(check_id(name))
+        {
+          syslog(LOG_ERR, _("Invalid name for outgoing connection in %s line %d"), cfg->file, cfg->line);
+          continue;
+        }
+
       if(setup_outgoing_connection(name))   /* function returns 0 when there are no problems */
         retry = 1;