projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix tincctl dump.
[tinc]
/
src
/
net.c
diff --git
a/src/net.c
b/src/net.c
index
db5743a
..
863dd76
100644
(file)
--- a/
src/net.c
+++ b/
src/net.c
@@
-113,7
+113,7
@@
void terminate_connection(connection_t *c, bool report) {
c->status.active = false;
c->status.active = false;
- if(c->node)
+ if(c->node
&& c->node->connection == c
)
c->node->connection = NULL;
if(c->edge) {
c->node->connection = NULL;
if(c->edge) {
@@
-121,6
+121,7
@@
void terminate_connection(connection_t *c, bool report) {
send_del_edge(everyone, c->edge);
edge_del(c->edge);
send_del_edge(everyone, c->edge);
edge_del(c->edge);
+ c->edge = NULL;
/* Run MST and SSSP algorithms */
/* Run MST and SSSP algorithms */
@@
-144,8
+145,10
@@
void terminate_connection(connection_t *c, bool report) {
/* Check if this was our outgoing connection */
if(c->outgoing) {
/* Check if this was our outgoing connection */
if(c->outgoing) {
- do_outgoing_connection(c);
- }
+ do_outgoing_connection(c);
+ } else {
+ connection_del(c);
+ }
}
/*
}
/*
@@
-338,9
+341,10
@@
int reload_configuration(void) {
void retry(void) {
connection_t *c;
void retry(void) {
connection_t *c;
- splay_node_t *node;
+ splay_node_t *node
, *next
;
- for(node = connection_tree->head; node; node = node->next) {
+ for(node = connection_tree->head; node; node = next) {
+ next = node->next;
c = node->data;
if(c->outgoing && !c->node) {
c = node->data;
if(c->outgoing && !c->node) {