From: Niklas Hofmann Date: Tue, 12 Aug 2014 15:34:50 +0000 (+0200) Subject: create a new connection only in case there is none X-Git-Url: http://git.meshlink.io/?p=meshlink;a=commitdiff_plain;h=f3dae7d32467b2ed28c1f62bfa2f5929f2611284 create a new connection only in case there is none --- diff --git a/src/net.c b/src/net.c index 9659a8f2..a528eb43 100644 --- a/src/net.c +++ b/src/net.c @@ -439,12 +439,24 @@ static void periodic_handler(event_loop_t *loop, void *data) { if(connect_to && !connect_to->connection) { - logger(mesh, MESHLINK_INFO, "Autoconnecting to %s", connect_to->name); - outgoing_t *outgoing = xzalloc(sizeof(outgoing_t)); - outgoing->mesh = mesh; - outgoing->name = xstrdup(connect_to->name); - list_insert_tail(mesh->outgoings, outgoing); - setup_outgoing_connection(mesh, outgoing); + /* check if there is already a connection attempt to this node */ + bool found = false; + for list_each(outgoing_t, outgoing, mesh->outgoings) { + if(!strcmp(outgoing->name, connect_to->name)) { + found = true; + break; + } + } + + if(!found) + { + logger(mesh, MESHLINK_INFO, "Autoconnecting to %s", connect_to->name); + outgoing_t *outgoing = xzalloc(sizeof(outgoing_t)); + outgoing->mesh = mesh; + outgoing->name = xstrdup(connect_to->name); + list_insert_tail(mesh->outgoings, outgoing); + setup_outgoing_connection(mesh, outgoing); + } }