X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fprotocol_auth.c;h=3720e14abc64c0bf9eeb7cf71fcb927feb55f691;hb=d78e24a1f77084f2395b7f344533fc1819b0b3b0;hp=5632c5a216d23c044e07d820da8661fc4b501f8e;hpb=5618834958c3ffd0250d3712174bd20aaac36e95;p=meshlink diff --git a/src/protocol_auth.c b/src/protocol_auth.c index 5632c5a2..3720e14a 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -298,7 +298,7 @@ static void send_everything(meshlink_handle_t *mesh, connection_t *c) { /* Send all known subnets and edges */ for splay_each(node_t, n, mesh->nodes) { - for splay_each(edge_t, e, n->edge_tree) { + for inner_splay_each(edge_t, e, n->edge_tree) { send_add_edge(mesh, c, e, 0); } } @@ -365,10 +365,15 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { /* Activate this connection */ c->allow_request = ALL; + c->last_key_renewal = mesh->loop.now.tv_sec; c->status.active = true; logger(mesh, MESHLINK_INFO, "Connection with %s activated", c->name); + if(mesh->meta_status_cb) { + mesh->meta_status_cb(mesh, (meshlink_node_t *)n, true); + } + /* Send him everything we know */ send_everything(mesh, c); @@ -384,6 +389,7 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) { c->edge->weight = mesh->dev_class_traits[devclass].edge_weight; c->edge->connection = c; + node_add_recent_address(mesh, n, &c->address); edge_add(mesh, c->edge); /* Notify everyone of the new edge */