- if(!read_host_config(mesh, c->config_tree, c->name)) {
- logger(mesh, MESHLINK_ERROR, "Peer %s had unknown identity (%s)", c->hostname, c->name);
- return false;
+ node_t *n = lookup_node(mesh, c->name);
+
+ if(!n) {
+ logger(mesh, MESHLINK_ERROR, "Peer %s has unknown identity", c->name);
+ return false;
+ }
+
+ if(n->status.blacklisted) {
+ logger(mesh, MESHLINK_WARNING, "Peer %s is blacklisted", c->name);
+ return false;
+ }
+
+ node_read_public_key(mesh, n);
+
+ if(!ecdsa_active(n->ecdsa)) {
+ logger(mesh, MESHLINK_ERROR, "No key known for peer %s", c->name);
+
+ if(n->status.reachable && !n->status.waitingforkey) {
+ logger(mesh, MESHLINK_INFO, "Requesting key from peer %s", c->name);
+ send_req_key(mesh, n);