- Fixed indirectdata=no problem
[tinc] / src / protocol.c
index 325177b..70122c1 100644 (file)
@@ -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: protocol.c,v 1.28.4.7 2000/06/26 17:20:58 guus Exp $
+    $Id: protocol.c,v 1.28.4.10 2000/06/27 12:58:04 guus Exp $
 */
 
 #include "config.h"
@@ -62,7 +62,8 @@ cp
       return -1;
     }
 
-  syslog(LOG_NOTICE, _("Connection with " IP_ADDR_S " (%s) activated"),
+  if(debug_lvl > 0)
+    syslog(LOG_NOTICE, _("Connection with " IP_ADDR_S " (%s) activated"),
                        IP_ADDR_V(cl->vpn_ip), cl->hostname);
 cp
   return 0;
@@ -400,8 +401,18 @@ cp
 
   if(sscanf(cl->buffer, "%*d %d %lx/%lx:%hx %d", &cl->protocol_version, &cl->vpn_ip, &cl->vpn_mask, &cl->port, &cl->flags) != 5)
     {
-       syslog(LOG_ERR, _("Got bad BASIC_INFO from " IP_ADDR_S),
+       syslog(LOG_ERR, _("Got bad BASIC_INFO from %s"),
               cl->hostname);
+       if(cl->status.outgoing)
+         {
+           /* If we get here, it means that our uplink uses the wrong protocol.
+              If we don't do anything, we will reconnect every 5 seconds. Pretty dumb.
+              So we disable the outgoing flag, so that we won't reconnect anymore.
+              This still allows other tinc daemons to connect to us.
+            */
+           syslog(LOG_ERR, _("Warning: disabling uplink!"));
+           cl->status.outgoing = 0;
+         }
        return -1;
     }  
 
@@ -527,11 +538,12 @@ cp
              IP_ADDR_V(cl->vpn_ip), cl->hostname);
   
   cl->status.termreq = 1;
-  cl->status.active = 0;
 
   if(cl->status.active)
     notify_others(cl, NULL, send_del_host);
 
+  cl->status.active = 0;
+
   terminate_connection(cl);
 cp
   return 0;
@@ -587,9 +599,11 @@ cp
       return 0;
     }
 
-  notify_others(cl, fw, send_del_host);
+  notify_others(fw, cl, send_del_host);
 
   fw->status.termreq = 1;
+  fw->status.active = 0;
+
   terminate_connection(fw);
 cp
   return 0;
@@ -885,7 +899,7 @@ cp
   ik->status.validkey = 0;
   ik->status.waitingforkey = 0;
 
-  notify_others(cl, ik, send_key_changed);
+  notify_others(ik, cl, send_key_changed);
 cp
   return 0;
 }