]> git.meshlink.io Git - meshlink/blobdiff - src/net_socket.c
A first attempt at merging UTCP into MeshLink.
[meshlink] / src / net_socket.c
index 3cbc5dd634fa2d60d302daab5a0959b9c16d9b17..85f51648dc81955f87b8c946f40e3bd6f059f2bc 100644 (file)
@@ -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)
@@ -680,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);