X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fprotocol.c;h=70122c1be7bfeb9e6d62bca7f76e942487be713f;hp=325177bd62b88a2eb992dd1c1ebc158576c68d31;hb=4faed1b8546563def6a426c563cec2a26d927eda;hpb=b3681ebf6c255daf082ed254282cbf493af8fa93 diff --git a/src/protocol.c b/src/protocol.c index 325177bd..70122c1b 100644 --- a/src/protocol.c +++ b/src/protocol.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: 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; }