X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fgraph.c;h=adca74594d3d25e9e98f1e817886e6cc258ebfd9;hp=3870c7090db9bc70894bbc6be30716223974f573;hb=7926a156e5b118d06295228e57de0cc9de0433b4;hpb=56aad1bb486675ff9aba31418708cc179eea0381 diff --git a/src/graph.c b/src/graph.c index 3870c709..adca7459 100644 --- a/src/graph.c +++ b/src/graph.c @@ -1,7 +1,7 @@ /* graph.c -- graph algorithms - Copyright (C) 2001-2003 Guus Sliepen , - 2001-2003 Ivo Timmermans + Copyright (C) 2001-2004 Guus Sliepen , + 2001-2004 Ivo Timmermans This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -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: graph.c,v 1.1.2.34 2003/12/22 11:04:16 guus Exp $ + $Id$ */ /* We need to generate two trees from the graph: @@ -219,8 +219,25 @@ void sssp_bfs(void) e->to->via = indirect ? n->via : e->to; e->to->options = e->options; - if(sockaddrcmp(&e->to->address, &e->address)) - update_node_address(e->to, &e->address); + if(sockaddrcmp(&e->to->address, &e->address)) { + node = avl_unlink(node_udp_tree, e->to); + sockaddrfree(&e->to->address); + sockaddrcpy(&e->to->address, &e->address); + + if(e->to->hostname) + free(e->to->hostname); + + e->to->hostname = sockaddr2hostname(&e->to->address); + avl_insert_node(node_udp_tree, node); + + if(e->to->options & OPTION_PMTU_DISCOVERY) { + e->to->mtuprobes = 0; + e->to->minmtu = 0; + e->to->maxmtu = MTU; + if(e->to->status.validkey) + send_mtu_probe(e->to); + } + } node = avl_alloc_node(); node->data = e->to;