// 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;
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);
}
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));
}