X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fgraph.c;h=cca0935029587cc20d2cafa3fddb992b9c4a5b10;hp=d68a973ba854f33a94814060af9fbabef649076a;hb=b47fbb8c5be20000f504e9e65d8ef0376ae92ff9;hpb=4712d8f92e63e86e835ffb624d6399343ee568ea diff --git a/src/graph.c b/src/graph.c index d68a973b..cca09350 100644 --- a/src/graph.c +++ b/src/graph.c @@ -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