X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fnet.c;h=26982d2c1cee159266ced08a25d26ce8531d6c9c;hb=7075cf7bc81998b6cf72ccb6748050cd40b006be;hp=84625917198c8cda4a339c7529f84a52b5e43b0c;hpb=b67296418c51784d39a24c3041e2cb199bee06f2;p=meshlink diff --git a/src/net.c b/src/net.c index 84625917..26982d2c 100644 --- a/src/net.c +++ b/src/net.c @@ -57,7 +57,7 @@ void terminate_connection(meshlink_handle_t *mesh, connection_t *c, bool report) if(c->edge) { if(report) { - send_del_edge(mesh, mesh->everyone, c->edge); + send_del_edge(mesh, mesh->everyone, c->edge, 0); } edge_del(mesh, c->edge); @@ -74,7 +74,7 @@ void terminate_connection(meshlink_handle_t *mesh, connection_t *c, bool report) e = lookup_edge(c->node, mesh->self); if(e) { - send_del_edge(mesh, mesh->everyone, e); + send_del_edge(mesh, mesh->everyone, e, 0); edge_del(mesh, e); } } @@ -387,8 +387,6 @@ static void periodic_handler(event_loop_t *loop, void *data) { // get min_connects and max_connects - assert(mesh->devclass >= 0 && mesh->devclass <= _DEV_CLASS_MAX); - unsigned int min_connects = dev_class_traits[mesh->devclass].min_connects; unsigned int max_connects = dev_class_traits[mesh->devclass].max_connects; @@ -404,7 +402,7 @@ static void periodic_handler(event_loop_t *loop, void *data) { for splay_each(node_t, n, mesh->nodes) { logger(mesh, MESHLINK_DEBUG, "* n->devclass = %d", n->devclass); - if(n != mesh->self && n->devclass <= mesh->devclass && !n->connection && (n->last_connect_try == 0 || (time(NULL) - n->last_connect_try) > retry_timeout)) { + if(n != mesh->self && n->devclass <= mesh->devclass && !n->connection && !n->status.blacklisted && (n->last_connect_try == 0 || (time(NULL) - n->last_connect_try) > retry_timeout)) { splay_insert(nodes, n); } } @@ -438,7 +436,7 @@ static void periodic_handler(event_loop_t *loop, void *data) { splay_tree_t *nodes = splay_alloc_tree(node_compare_lsc_desc, NULL); for splay_each(node_t, n, mesh->nodes) { - if(n != mesh->self && n->devclass == devclass && !n->connection && (n->last_connect_try == 0 || (time(NULL) - n->last_connect_try) > retry_timeout)) { + if(n != mesh->self && n->devclass == devclass && !n->connection && !n->status.blacklisted && (n->last_connect_try == 0 || (time(NULL) - n->last_connect_try) > retry_timeout)) { splay_insert(nodes, n); } } @@ -469,7 +467,7 @@ static void periodic_handler(event_loop_t *loop, void *data) { splay_tree_t *nodes = splay_alloc_tree(node_compare_devclass_asc_lsc_desc, NULL); for splay_each(node_t, n, mesh->nodes) { - if(n != mesh->self && n->devclass <= mesh->devclass && !n->status.reachable && (n->last_connect_try == 0 || (time(NULL) - n->last_connect_try) > retry_timeout)) { + if(n != mesh->self && n->devclass <= mesh->devclass && !n->status.reachable && !n->status.blacklisted && (n->last_connect_try == 0 || (time(NULL) - n->last_connect_try) > retry_timeout)) { splay_insert(nodes, n); } } @@ -489,6 +487,7 @@ static void periodic_handler(event_loop_t *loop, void *data) { if(connect_to && !connect_to->connection) { connect_to->last_connect_try = time(NULL); + logger(mesh, MESHLINK_DEBUG, "Autoconnect trying to connect to %s", connect_to->name); /* check if there is already a connection attempt to this node */ bool found = false;