From: Guus Sliepen Date: Thu, 28 Aug 2003 15:27:12 +0000 (+0000) Subject: Remove old edges from unreachable nodes to us. This prevents the hosts/NAME-up X-Git-Tag: release-1.0.2~31 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=762cc2d2797d62ab593ea64d8ceeb4fe96be2a0d;p=oweals%2Ftinc.git Remove old edges from unreachable nodes to us. This prevents the hosts/NAME-up script from being called twice in some situations. --- diff --git a/src/net.c b/src/net.c index 1f0655b..d6f4403 100644 --- 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.198 2003/08/22 15:04:26 guus Exp $ + $Id: net.c,v 1.35.4.199 2003/08/28 15:27:11 guus Exp $ */ #include "system.h" @@ -186,6 +186,17 @@ void terminate_connection(connection_t *c, bool report) /* Run MST and SSSP algorithms */ graph(); + + /* If the node is not reachable anymore but we remember it had an edge to us, clean it up */ + + if(report && !c->node->status.reachable) { + edge_t *e; + e = lookup_edge(c->node, myself); + if(e) { + send_del_edge(broadcast, e); + edge_del(e); + } + } } /* Check if this was our outgoing connection */ diff --git a/src/protocol_edge.c b/src/protocol_edge.c index 4552a52..5949a38 100644 --- a/src/protocol_edge.c +++ b/src/protocol_edge.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_edge.c,v 1.1.4.20 2003/07/24 12:08:16 guus Exp $ + $Id: protocol_edge.c,v 1.1.4.21 2003/08/28 15:27:12 guus Exp $ */ #include "system.h" @@ -250,5 +250,15 @@ bool del_edge_h(connection_t *c) graph(); + /* If the node is not reachable anymore but we remember it had an edge to us, clean it up */ + + if(!to->status.reachable) { + e = lookup_edge(to, myself); + if(e) { + send_del_edge(broadcast, e); + edge_del(e); + } + } + return true; }