If a node restarts, but its old connection was not considered closed
yet, the graph algorithm never saw it go down. We still want to ensure
we restart UDP SPTPS in this case.
if(n->utcp) {
utcp_abort_all_connections(n->utcp);
}
+
+ if(n->status.visited == n->status.reachable) {
+ /* This session replaces the previous one without changing reachability status.
+ * We still need to reset the UDP SPTPS state.
+ */
+ n->status.validkey = false;
+ sptps_stop(&n->sptps);
+ n->status.waitingforkey = false;
+ n->last_req_key = 0;
+
+ n->status.udp_confirmed = false;
+ n->maxmtu = MTU;
+ n->minmtu = 0;
+ n->mtuprobes = 0;
+
+ timeout_del(&mesh->loop, &n->mtutimeout);
+ }
}
if(n->status.visited != n->status.reachable) {