X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fnet_socket.c;h=589c4caa9b5424bb3113d61b6b59e0b124313e55;hb=93f89bcae11e8d250831896bc5694ee8bd2ad22b;hp=bc599e8ad927239c316b712efe64096b9a8edc72;hpb=4ea5d218c5c8e5739071bc6e57cf8404db5323ef;p=meshlink diff --git a/src/net_socket.c b/src/net_socket.c index bc599e8a..589c4caa 100644 --- a/src/net_socket.c +++ b/src/net_socket.c @@ -37,13 +37,9 @@ #endif int addressfamily = AF_UNSPEC; -int maxtimeout = 900; int seconds_till_retry = 5; int max_connection_burst = 100; -listen_socket_t listen_socket[MAXSOCKETS]; -int listen_sockets; - /* Setup sockets */ static void configure_tcp(connection_t *c) { @@ -77,8 +73,8 @@ static void configure_tcp(connection_t *c) { static bool bind_to_address(connection_t *c) { int s = -1; - for(int i = 0; i < listen_sockets && listen_socket[i].bindto; i++) { - if(listen_socket[i].sa.sa.sa_family != c->address.sa.sa_family) + for(int i = 0; i < mesh->listen_sockets && mesh->listen_socket[i].bindto; i++) { + if(mesh->listen_socket[i].sa.sa.sa_family != c->address.sa.sa_family) continue; if(s >= 0) return false; @@ -88,7 +84,7 @@ static bool bind_to_address(connection_t *c) { if(s < 0) return false; - sockaddr_t sa = listen_socket[s].sa; + sockaddr_t sa = mesh->listen_socket[s].sa; if(sa.sa.sa_family == AF_INET) sa.in.sin_port = 0; else if(sa.sa.sa_family == AF_INET6) @@ -236,17 +232,17 @@ int setup_vpn_in_socket(const sockaddr_t *sa) { return nfd; } /* int setup_vpn_in_socket */ -static void retry_outgoing_handler(void *data) { +static void retry_outgoing_handler(event_loop_t *loop, void *data) { setup_outgoing_connection(data); } void retry_outgoing(outgoing_t *outgoing) { outgoing->timeout += 5; - if(outgoing->timeout > maxtimeout) - outgoing->timeout = maxtimeout; + if(outgoing->timeout > mesh->maxtimeout) + outgoing->timeout = mesh->maxtimeout; - timeout_add(&outgoing->ev, retry_outgoing_handler, outgoing, &(struct timeval){outgoing->timeout, rand() % 100000}); + timeout_add(&mesh->loop, &outgoing->ev, retry_outgoing_handler, outgoing, &(struct timeval){outgoing->timeout, rand() % 100000}); logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Trying to re-establish outgoing connection in %d seconds", outgoing->timeout); } @@ -327,10 +323,10 @@ static void handle_meta_write(connection_t *c) { buffer_read(&c->outbuf, outlen); if(!c->outbuf.len) - io_set(&c->io, IO_READ); + io_set(&mesh->loop, &c->io, IO_READ); } -static void handle_meta_io(void *data, int flags) { +static void handle_meta_io(event_loop_t *loop, void *data, int flags) { connection_t *c = data; if(c->status.connecting) { @@ -468,7 +464,7 @@ begin: connection_add(c); - io_add(&c->io, handle_meta_io, c, c->socket, IO_READ|IO_WRITE); + io_add(&mesh->loop, &c->io, handle_meta_io, c, c->socket, IO_READ|IO_WRITE); return true; } @@ -507,7 +503,7 @@ static struct addrinfo *get_known_addresses(node_t *n) { } void setup_outgoing_connection(outgoing_t *outgoing) { - timeout_del(&outgoing->ev); + timeout_del(&mesh->loop, &outgoing->ev); node_t *n = lookup_node(outgoing->name); @@ -538,7 +534,7 @@ void setup_outgoing_connection(outgoing_t *outgoing) { accept a new tcp connect and create a new connection */ -void handle_new_meta_connection(void *data, int flags) { +void handle_new_meta_connection(event_loop_t *loop, void *data, int flags) { listen_socket_t *l = data; connection_t *c; sockaddr_t sa; @@ -616,7 +612,7 @@ void handle_new_meta_connection(void *data, int flags) { logger(DEBUG_CONNECTIONS, LOG_NOTICE, "Connection from %s", c->hostname); - io_add(&c->io, handle_meta_io, c, c->socket, IO_READ); + io_add(&mesh->loop, &c->io, handle_meta_io, c, c->socket, IO_READ); configure_tcp(c); @@ -627,7 +623,7 @@ void handle_new_meta_connection(void *data, int flags) { } static void free_outgoing(outgoing_t *outgoing) { - timeout_del(&outgoing->ev); + timeout_del(&mesh->loop, &outgoing->ev); if(outgoing->ai) freeaddrinfo(outgoing->ai);