- return send_request(to->nexthop->connection, "%s", request);
- }
-
- /* SPTPS or old-style key exchange? */
-
- if(from->status.sptps) {
- char buf[strlen(key)];
- int len = b64decode(key, buf, strlen(key));
-
- if(!sptps_receive_data(&from->sptps, buf, len))
- logger(DEBUG_ALWAYS, LOG_ERR, "Error processing SPTPS data from %s (%s)", from->name, from->hostname);
-
- if(from->status.validkey) {
- if(*address && *port) {
- logger(DEBUG_PROTOCOL, LOG_DEBUG, "Using reflexive UDP address from %s: %s port %s", from->name, address, port);
- sockaddr_t sa = str2sockaddr(address, port);
- update_node_udp(from, &sa);
- }
-
- if(from->options & OPTION_PMTU_DISCOVERY)
- send_mtu_probe(from);
- }
-
- return true;
- }
-
- /* Check and lookup cipher and digest algorithms */
-
- if(!cipher_open_by_nid(&from->outcipher, cipher)) {
- logger(DEBUG_ALWAYS, LOG_ERR, "Node %s (%s) uses unknown cipher!", from->name, from->hostname);
- return false;
- }
-
- if(!digest_open_by_nid(&from->outdigest, digest, maclength)) {
- logger(DEBUG_ALWAYS, LOG_ERR, "Node %s (%s) uses unknown digest!", from->name, from->hostname);
- return false;