]> git.meshlink.io Git - meshlink/blobdiff - src/protocol_auth.c
Check blacklist status before committing an invitation.
[meshlink] / src / protocol_auth.c
index 7bf121989b308558a0305d29cb0478a943818e07..e1a9a31341f8b73846628e49509335b1f4c0e511 100644 (file)
@@ -48,8 +48,21 @@ bool send_id(meshlink_handle_t *mesh, connection_t *c) {
 }
 
 static bool commit_invitation(meshlink_handle_t *mesh, connection_t *c, const void *data) {
+       // Check if the node is known
+       node_t *n = lookup_node(mesh, c->name);
+
+       if(n) {
+               if(n->status.blacklisted) {
+                       logger(mesh, MESHLINK_ERROR, "Invitee %s is blacklisted", c->name);
+               } else {
+                       logger(mesh, MESHLINK_ERROR, "Invitee %s already known", c->name);
+               }
+
+               return false;
+       }
+
        // Create a new node
-       node_t *n = new_node();
+       n = new_node();
        n->name = xstrdup(c->name);
        n->devclass = DEV_CLASS_UNKNOWN;
        n->ecdsa = ecdsa_set_public_key(data);