X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fgraph.c;h=cca0935029587cc20d2cafa3fddb992b9c4a5b10;hp=297832cda5bb8f3eeabd8cf241c3eeacfc8601f0;hb=e8bef0453680526bf82600ae766ff0c9dec22975;hpb=5a28aa7b8b0ab6237c2eab5f8b11253ea3ec5a05 diff --git a/src/graph.c b/src/graph.c index 297832cd..cca09350 100644 --- a/src/graph.c +++ b/src/graph.c @@ -1,6 +1,6 @@ /* graph.c -- graph algorithms - Copyright (C) 2001-2011 Guus Sliepen , + Copyright (C) 2001-2012 Guus Sliepen , 2001-2005 Ivo Timmermans This program is free software; you can redistribute it and/or modify @@ -287,10 +287,13 @@ static void sssp_bfs(void) { subnet_update(n, NULL, n->status.reachable); - if(!n->status.reachable) + if(!n->status.reachable) { update_node_udp(n, NULL); - else if(n->connection) + memset(&n->status, 0, sizeof n->status); + n->options = 0; + } else if(n->connection) { send_ans_key(n); + } } } } @@ -315,7 +318,7 @@ void dump_graph(void) { node_t *n; edge_t *e; char *filename = NULL, *tmpname = NULL; - FILE *file; + FILE *file, *pipe = NULL; if(!graph_changed || !get_config_string(lookup_config(config_tree, "GraphDumpFile"), &filename)) return; @@ -325,7 +328,7 @@ void dump_graph(void) { ifdebug(PROTOCOL) logger(LOG_NOTICE, "Dumping graph"); if(filename[0] == '|') { - file = popen(filename + 1, "w"); + file = pipe = popen(filename + 1, "w"); } else { xasprintf(&tmpname, "%s.new", filename); file = fopen(tmpname, "w"); @@ -353,8 +356,8 @@ void dump_graph(void) { fprintf(file, "}\n"); - if(filename[0] == '|') { - pclose(file); + if(pipe) { + pclose(pipe); } else { fclose(file); #ifdef HAVE_MINGW