Prevent anything from updating our own UDP address.

Because we don't want to keep track of that, and this will cause the node
structure from being relinked into the node tree, which results in myself
pointing to an invalid address.
This commit is contained in:
Guus Sliepen 2011-02-18 23:11:43 +01:00
parent cdbbbfabea
commit 7cf68b5e35
2 changed files with 8 additions and 0 deletions

View file

@ -581,6 +581,9 @@ static node_t *try_harder(const sockaddr_t *from, const vpn_packet_t *pkt) {
for(node = edge_weight_tree->head; node; node = node->next) {
e = node->data;
if(e->to == myself)
continue;
if(sockaddrcmp_noport(from, &e->address)) {
if(last_hard_try == now)
continue;

View file

@ -141,6 +141,11 @@ node_t *lookup_node_udp(const sockaddr_t *sa) {
}
void update_node_udp(node_t *n, const sockaddr_t *sa) {
if(n == myself) {
logger(LOG_WARNING, "Trying to update UDP address of myself!\n");
return;
}
avl_delete(node_udp_tree, n);
if(n->hostname)