- read_ecdsa_public_key(mesh, c);
- } else {
- if(c->protocol_minor && !ecdsa_active(c->ecdsa))
- c->protocol_minor = 1;
+ bool blacklisted = false;
+ get_config_bool(lookup_config(c->config_tree, "blacklisted"), &blacklisted);
+
+ if(blacklisted) {
+ logger(mesh, MESHLINK_EPEER, "Peer %s is blacklisted", c->name);
+ return false;
+ }
+
+ read_ecdsa_public_key(mesh, c);
+
+ if(!ecdsa_active(c->ecdsa)) {
+ logger(mesh, MESHLINK_ERROR, "No key known for peer %s", c->name);
+
+ node_t *n = lookup_node(mesh, c->name);
+
+ if(n && !n->status.waitingforkey) {
+ logger(mesh, MESHLINK_INFO, "Requesting key from peer %s", c->name);
+ send_req_key(mesh, n);
+ }
+
+ return false;