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);
}
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);
}
void finish_connecting(connection_t *c) {
logger(DEBUG_CONNECTIONS, LOG_INFO, "Connected to %s (%s)", c->name, c->hostname);
- c->last_ping_time = now.tv_sec;
+ c->last_ping_time = mesh->loop.now.tv_sec;
c->status.connecting = false;
send_id(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) {
c->status.connecting = true;
c->name = xstrdup(outgoing->name);
c->outcompression = mesh->self->connection->outcompression;
- c->last_ping_time = now.tv_sec;
+ c->last_ping_time = mesh->loop.now.tv_sec;
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;
}
}
void setup_outgoing_connection(outgoing_t *outgoing) {
- timeout_del(&outgoing->ev);
+ timeout_del(&mesh->loop, &outgoing->ev);
node_t *n = lookup_node(outgoing->name);
}
init_configuration(&outgoing->config_tree);
- read_host_config(outgoing->config_tree, outgoing->name);
+ read_host_config(mesh, outgoing->config_tree, outgoing->name);
outgoing->cfg = lookup_config(outgoing->config_tree, "Address");
if(!outgoing->cfg) {
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;
static int samehost_burst;
static int samehost_burst_time;
- if(now.tv_sec - samehost_burst_time > samehost_burst)
+ if(mesh->loop.now.tv_sec - samehost_burst_time > samehost_burst)
samehost_burst = 0;
else
- samehost_burst -= now.tv_sec - samehost_burst_time;
+ samehost_burst -= mesh->loop.now.tv_sec - samehost_burst_time;
- samehost_burst_time = now.tv_sec;
+ samehost_burst_time = mesh->loop.now.tv_sec;
samehost_burst++;
if(samehost_burst > max_connection_burst) {
static int connection_burst;
static int connection_burst_time;
- if(now.tv_sec - connection_burst_time > connection_burst)
+ if(mesh->loop.now.tv_sec - connection_burst_time > connection_burst)
connection_burst = 0;
else
- connection_burst -= now.tv_sec - connection_burst_time;
+ connection_burst -= mesh->loop.now.tv_sec - connection_burst_time;
- connection_burst_time = now.tv_sec;
+ connection_burst_time = mesh->loop.now.tv_sec;
connection_burst++;
if(connection_burst >= max_connection_burst) {
c->address = sa;
c->hostname = sockaddr2hostname(&sa);
c->socket = fd;
- c->last_ping_time = now.tv_sec;
+ c->last_ping_time = mesh->loop.now.tv_sec;
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);
}
static void free_outgoing(outgoing_t *outgoing) {
- timeout_del(&outgoing->ev);
+ timeout_del(&mesh->loop, &outgoing->ev);
if(outgoing->ai)
freeaddrinfo(outgoing->ai);