- if(compression < 0 || compression > 11) {
- logger(LOG_ERR, _("Node %s (%s) uses bogus compression level!"), from->name, from->hostname);
- return false;
+ /* Forward it if necessary */
+
+ if(to != mesh->self) {
+ if(!to->status.reachable) {
+ logger(mesh, MESHLINK_WARNING, "Got %s from %s destination %s which is not reachable",
+ "ANS_KEY", c->name, to_name);
+ return true;
+ }
+
+ if(!*address && from->address.sa.sa_family != AF_UNSPEC) {
+ char *address, *port;
+ logger(mesh, MESHLINK_DEBUG, "Appending reflexive UDP address to ANS_KEY from %s to %s", from->name, to->name);
+ sockaddr2str(&from->address, &address, &port);
+ send_request(mesh, to->nexthop->connection, NULL, "%s %s %s", request, address, port);
+ free(address);
+ free(port);
+ return true;
+ }
+
+ return send_request(mesh, to->nexthop->connection, NULL, "%s", request);