X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fnet_socket.c;h=85f51648dc81955f87b8c946f40e3bd6f059f2bc;hb=e641a32566620c71a6bde2d35a6dba208e9b631a;hp=2564a9c1bd264460cd1d3028b64c3234ffa04090;hpb=8ac2f217eff96f2bc9da8a41031d453bf0f16a29;p=meshlink diff --git a/src/net_socket.c b/src/net_socket.c index 2564a9c1..85f51648 100644 --- a/src/net_socket.c +++ b/src/net_socket.c @@ -58,13 +58,13 @@ static void configure_tcp(connection_t *c) { #endif #if defined(SOL_TCP) && defined(TCP_NODELAY) - option = 1; - setsockopt(c->socket, SOL_TCP, TCP_NODELAY, (void *)&option, sizeof option); + int nodelay = 1; + setsockopt(c->socket, SOL_TCP, TCP_NODELAY, (void *)&nodelay, sizeof nodelay); #endif #if defined(SOL_IP) && defined(IP_TOS) && defined(IPTOS_LOWDELAY) - option = IPTOS_LOWDELAY; - setsockopt(c->socket, SOL_IP, IP_TOS, (void *)&option, sizeof option); + int lowdelay = IPTOS_LOWDELAY; + setsockopt(c->socket, SOL_IP, IP_TOS, (void *)&lowdelay, sizeof lowdelay); #endif } @@ -503,6 +503,7 @@ static struct addrinfo *get_known_addresses(node_t *n) { } void setup_outgoing_connection(meshlink_handle_t *mesh, outgoing_t *outgoing) { + bool blacklisted = false; timeout_del(&mesh->loop, &outgoing->ev); node_t *n = lookup_node(mesh, outgoing->name); @@ -518,6 +519,9 @@ void setup_outgoing_connection(meshlink_handle_t *mesh, outgoing_t *outgoing) { read_host_config(mesh, outgoing->config_tree, outgoing->name); outgoing->cfg = lookup_config(outgoing->config_tree, "Address"); + get_config_bool(lookup_config(outgoing->config_tree, "blacklisted"), &blacklisted); + if (blacklisted) return; + if(!outgoing->cfg) { if(n) outgoing->aip = outgoing->ai = get_known_addresses(n); @@ -628,7 +632,9 @@ void handle_new_meta_connection(event_loop_t *loop, void *data, int flags) { send_id(mesh, c); } -static void free_outgoing(meshlink_handle_t *mesh, outgoing_t *outgoing) { +static void free_outgoing(outgoing_t *outgoing) { + meshlink_handle_t *mesh = outgoing->mesh; + timeout_del(&mesh->loop, &outgoing->ev); if(outgoing->ai) @@ -658,7 +664,6 @@ void try_outgoing_connections(meshlink_handle_t *mesh) { // TODO: Drop support for ConnectTo since AutoConnect is now always on? for(config_t *cfg = lookup_config(mesh->config, "ConnectTo"); cfg; cfg = lookup_config_next(mesh->config, cfg)) { char *name; - bool blacklisted; get_config_string(cfg, &name); if(!check_id(name)) { @@ -669,10 +674,6 @@ void try_outgoing_connections(meshlink_handle_t *mesh) { continue; } - get_config_bool(lookup_config(mesh->config, "blacklisted"), &blacklisted); - if (blacklisted) - continue; - bool found = false; for list_each(outgoing_t, outgoing, mesh->outgoings) { @@ -685,6 +686,7 @@ void try_outgoing_connections(meshlink_handle_t *mesh) { if(!found) { outgoing_t *outgoing = xzalloc(sizeof *outgoing); + outgoing->mesh = mesh; outgoing->name = name; list_insert_tail(mesh->outgoings, outgoing); setup_outgoing_connection(mesh, outgoing);