if(e->to->status.visited
&& (!e->to->status.indirect || indirect)
- && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight))
+ && (e->to->prevedge && (e->to->distance != n->distance + 1 || e->weight >= e->to->prevedge->weight)))
continue;
// Only update nexthop if it doesn't increase the path length
n->status.udp_confirmed = false;
n->maxmtu = MTU;
+ n->maxrecentlen = 0;
n->minmtu = 0;
n->mtuprobes = 0;
- timeout_del(&n->mtutimeout);
+ timeout_del(&n->udp_ping_timeout);
char *name;
char *address;
update_node_udp(n, NULL);
memset(&n->status, 0, sizeof n->status);
n->options = 0;
+ } else if(n->connection) {
+ // Speed up UDP probing by sending our key.
+ if(!n->status.sptps)
+ send_ans_key(n);
}
}