]> git.meshlink.io Git - meshlink/blobdiff - src/protocol_auth.c
Always let the initiator send a REQ_KEY once a connection is activated.
[meshlink] / src / protocol_auth.c
index 201cac9fe000eef05b17561fd4223ec31805e60b..4165bb1b987cfbfa4dae0d5362a8137ef7eeaece 100644 (file)
@@ -360,6 +360,7 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) {
        n->last_successfull_connection = mesh->loop.now.tv_sec;
 
        n->connection = c;
+       n->nexthop = n;
        c->node = n;
 
        /* Activate this connection */
@@ -370,6 +371,10 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) {
 
        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);
@@ -385,6 +390,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 */
@@ -395,5 +401,11 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) {
 
        graph(mesh);
 
+       /* Request a session key to jump start UDP traffic */
+
+       if(c->status.initiator) {
+               send_req_key(mesh, n);
+       }
+
        return true;
 }