projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix infinite loop in timeout handling on Windows.
[tinc]
/
src
/
graph.c
diff --git
a/src/graph.c
b/src/graph.c
index
48310bc
..
73db3b2
100644
(file)
--- a/
src/graph.c
+++ b/
src/graph.c
@@
-125,13
+125,13
@@
static void sssp_bfs(void) {
/* Loop while todo_list is filled */
/* Loop while todo_list is filled */
- for list_each(node_t, n, todo_list) { /* "n" is the node from which we start */
+ for list_each(node_t, n, todo_list) { /* "n" is the node from which we start */
logger(DEBUG_SCARY_THINGS, LOG_DEBUG, " Examining edges from %s", n->name);
if(n->distance < 0)
abort();
logger(DEBUG_SCARY_THINGS, LOG_DEBUG, " Examining edges from %s", n->name);
if(n->distance < 0)
abort();
- for splay_each(edge_t, e, n->edge_tree) { /* "e" is the edge connected to "from" */
+ for splay_each(edge_t, e, n->edge_tree) { /* "e" is the edge connected to "from" */
if(!e->reverse)
continue;
if(!e->reverse)
continue;
@@
-213,8
+213,7
@@
static void check_reachability(void) {
n->minmtu = 0;
n->mtuprobes = 0;
n->minmtu = 0;
n->mtuprobes = 0;
- if(timeout_initialized(&n->mtuevent))
- event_del(&n->mtuevent);
+ timeout_del(&n->mtutimeout);
char *name;
char *address;
char *name;
char *address;
@@
-246,6
+245,8
@@
static void check_reachability(void) {
if(!n->status.reachable) {
update_node_udp(n, NULL);
if(!n->status.reachable) {
update_node_udp(n, NULL);
+ memset(&n->status, 0, sizeof n->status);
+ n->options = 0;
} else if(n->connection) {
if(n->status.sptps) {
if(n->connection->outgoing)
} else if(n->connection) {
if(n->status.sptps) {
if(n->connection->outgoing)