From: Saverio Proto Date: Fri, 5 Sep 2014 17:33:02 +0000 (+0200) Subject: Remove disconnect code from autoconnect because it makes the mesh flapping X-Git-Url: https://git.meshlink.io/?a=commitdiff_plain;h=652ee1866eba2e01ea0dbb65f07e9b04db961fc3;p=meshlink Remove disconnect code from autoconnect because it makes the mesh flapping --- diff --git a/src/net.c b/src/net.c index 8400b936..212ff6c4 100644 --- a/src/net.c +++ b/src/net.c @@ -494,81 +494,6 @@ static void periodic_handler(event_loop_t *loop, void *data) { } - // disconnect suboptimal outgoing connections - - if(min_connects < cur_connects && cur_connects <= max_connects) - { - unsigned int connects = 0; - - for(int devclass = 0; devclass <= mesh->devclass; ++devclass) - { - for list_each(connection_t, c, mesh->connections) - { - if(!c->status.remove_unused && c->node && c->node->devclass == devclass) - { connects += 1; } - } - - if( min_connects < connects ) - { - splay_tree_t *nodes = splay_alloc_tree(node_compare_devclass_desc, NULL); - - for list_each(connection_t, c, mesh->connections) - { - if(!c->status.remove_unused && c->outgoing && c->node && c->node->devclass >= devclass) - { splay_insert(nodes, c->node); } - } - - if(nodes->head) - { - logger(mesh, MESHLINK_INFO, "* disconnect suboptimal outgoing connection"); - disconnect_from = (node_t*)nodes->head->data; - } - - splay_free_tree(nodes); - break; - } - } - - if(!disconnect_from) - { logger(mesh, MESHLINK_INFO, "* no suboptimal outgoing connections"); } - } - - - // disconnect connections (too many connections) - - if(!disconnect_from && max_connects < cur_connects) - { - splay_tree_t *nodes = splay_alloc_tree(node_compare_devclass_desc, NULL); - - for list_each(connection_t, c, mesh->connections) - { - if(!c->status.remove_unused && c->node) - { splay_insert(nodes, c->node); } - } - - if(nodes->head) - { - logger(mesh, MESHLINK_INFO, "* disconnect connection (too many connections)"); - - //timeout = 0; - disconnect_from = (node_t*)nodes->head->data; - } - else - { logger(mesh, MESHLINK_INFO, "* no node we want to disconnect, even though we have too many connections"); } - - splay_free_tree(nodes); - } - - - // perform disconnect - - if(disconnect_from && disconnect_from->connection) - { - logger(mesh, MESHLINK_INFO, "Autodisconnecting from %s", disconnect_from->connection->name); - list_delete(mesh->outgoings, disconnect_from->connection->outgoing); - disconnect_from->connection->outgoing = NULL; - terminate_connection(mesh, disconnect_from->connection, disconnect_from->connection->status.active); - } // done!