X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fprotocol_edge.c;h=5553f436fd95e70e6fced3a2226a893e1d93dd60;hp=c000ec0595ee44e496c1a5bc2cbf1f9b8ad150b5;hb=60fb2308e5bf1fd9ce642f6c4bcde81997593504;hpb=994adadf2752fd7515ee30ed5fdb91178a615fe9 diff --git a/src/protocol_edge.c b/src/protocol_edge.c index c000ec05..5553f436 100644 --- a/src/protocol_edge.c +++ b/src/protocol_edge.c @@ -142,8 +142,19 @@ bool add_edge_h(connection_t *c, const char *request) { } else { logger(DEBUG_PROTOCOL, LOG_WARNING, "Got %s from %s (%s) which does not match existing entry", "ADD_EDGE", c->name, c->hostname); - edge_del(e); + e->options = options; + if(sockaddrcmp(&e->address, &address)) { + sockaddrfree(&e->address); + e->address = address; + } + if(e->weight != weight) { + avl_node_t *node = avl_unlink(edge_weight_tree, e); + e->weight = weight; + avl_insert_node(edge_weight_tree, node); + } + graph(); + return true; } } else if(sockaddrcmp(&e->local_address, &local_address)) { if(from == myself) {