]> git.meshlink.io Git - meshlink/blobdiff - src/protocol_auth.c
Ignore ADD_EDGE messages we know are outdated.
[meshlink] / src / protocol_auth.c
index e1a9a31341f8b73846628e49509335b1f4c0e511..a0d350d5b9ff83700439b02802ad5882c739b668 100644 (file)
@@ -71,7 +71,7 @@ static bool commit_invitation(meshlink_handle_t *mesh, connection_t *c, const vo
        // Remember its current address
        node_add_recent_address(mesh, n, &c->address);
 
-       if(!node_write_config(mesh, n) || !config_sync(mesh, "current")) {
+       if(!node_write_config(mesh, n, true) || !config_sync(mesh, "current")) {
                logger(mesh, MESHLINK_ERROR, "Error writing configuration file for invited node %s!\n", c->name);
                free_node(n);
                return false;
@@ -267,11 +267,6 @@ bool id_h(meshlink_handle_t *mesh, connection_t *c, const char *request) {
                return false;
        }
 
-       if(n->status.blacklisted) {
-               logger(mesh, MESHLINK_WARNING, "Peer %s is blacklisted", c->name);
-               return false;
-       }
-
        if(!node_read_public_key(mesh, n)) {
                logger(mesh, MESHLINK_ERROR, "No key known for peer %s", c->name);
 
@@ -301,14 +296,24 @@ bool id_h(meshlink_handle_t *mesh, connection_t *c, const char *request) {
                snprintf(label, sizeof(label), "%s %s %s", meshlink_tcp_label, c->name, mesh->self->name);
        }
 
-       char buf1[1024], buf2[1024];
-       bin2hex((uint8_t *)mesh->private_key + 64, buf1, 32);
-       bin2hex((uint8_t *)n->ecdsa + 64, buf2, 32);
-       logger(mesh, MESHLINK_DEBUG, "Connection to %s mykey %s hiskey %s", c->name, buf1, buf2);
+       if(mesh->log_level <= MESHLINK_DEBUG) {
+               char buf1[1024], buf2[1024];
+               bin2hex((uint8_t *)mesh->private_key + 64, buf1, 32);
+               bin2hex((uint8_t *)n->ecdsa + 64, buf2, 32);
+               logger(mesh, MESHLINK_DEBUG, "Connection to %s mykey %s hiskey %s", c->name, buf1, buf2);
+       }
+
        return sptps_start(&c->sptps, c, c->outgoing, false, mesh->private_key, n->ecdsa, label, sizeof(label) - 1, send_meta_sptps, receive_meta_sptps);
 }
 
 bool send_ack(meshlink_handle_t *mesh, connection_t *c) {
+       node_t *n = lookup_node(mesh, c->name);
+
+       if(n && n->status.blacklisted) {
+               logger(mesh, MESHLINK_WARNING, "Peer %s is blacklisted", c->name);
+               return send_error(mesh, c, BLACKLISTED, "blacklisted");
+       }
+
        c->last_ping_time = mesh->loop.now.tv_sec;
        return send_request(mesh, c, NULL, "%d %s %d %x", ACK, mesh->myport, mesh->devclass, OPTION_PMTU_DISCOVERY | (PROT_MINOR << 24));
 }
@@ -353,7 +358,7 @@ bool ack_h(meshlink_handle_t *mesh, connection_t *c, const char *request) {
        } else {
                if(n->connection) {
                        /* Oh dear, we already have a connection to this node. */
-                       logger(mesh, MESHLINK_DEBUG, "Established a second connection with %s, closing old connection", n->connection->name);
+                       logger(mesh, MESHLINK_INFO, "Established a second connection with %s, closing old connection", n->connection->name);
 
                        if(n->connection->outgoing) {
                                if(c->outgoing) {