if(to == myself) { /* Yes, send our own key back */
mykeyused = true;
from->received_seqno = 0;
- memset(from->late, 0, sizeof(from->late));
+ memset(from->late, 0, sizeof from->late);
send_ans_key(c, myself, from);
} else {
if(tunnelserver)
return false;
+ if(!to->status.reachable) {
+ logger(LOG_WARNING, _("Got %s from %s (%s) destination %s which is not reachable"),
+ "REQ_KEY", c->name, c->hostname, to_name);
+ return true;
+ }
+
send_req_key(to->nexthop->connection, from, to);
}
bool send_ans_key(connection_t *c, const node_t *from, const node_t *to) {
size_t keylen = cipher_keylength(&from->cipher);
- char key[keylen];
+ char key[keylen * 2 + 1];
cp();
if(tunnelserver)
return false;
+ if(!to->status.reachable) {
+ logger(LOG_WARNING, _("Got %s from %s (%s) destination %s which is not reachable"),
+ "ANS_KEY", c->name, c->hostname, to_name);
+ return true;
+ }
+
return send_request(to->nexthop->connection, "%s", request);
}