if(type == SPTPS_HANDSHAKE || tcponly || (!direct && !relay_supported) || (type != PKT_PROBE && origlen > relay->minmtu)) {
if(type != SPTPS_HANDSHAKE && (to->nexthop->connection->options >> 24) >= 7) {
- uint8_t buf[len + sizeof(to->id) + sizeof(from->id)];
+ const size_t buflen = len + sizeof(to->id) + sizeof(from->id);
+ uint8_t *buf = alloca(buflen);
uint8_t *buf_ptr = buf;
memcpy(buf_ptr, &to->id, sizeof(to->id));
buf_ptr += sizeof(to->id);
buf_ptr += sizeof(from->id);
memcpy(buf_ptr, data, len);
logger(DEBUG_TRAFFIC, LOG_INFO, "Sending packet from %s (%s) to %s (%s) via %s (%s) (TCP)", from->name, from->hostname, to->name, to->hostname, to->nexthop->name, to->nexthop->hostname);
- return send_sptps_tcppacket(to->nexthop->connection, buf, sizeof(buf));
+ return send_sptps_tcppacket(to->nexthop->connection, buf, buflen);
}
- char buf[B64_SIZE(len)];
+ char *buf = alloca(B64_SIZE(len));
b64encode_tinc(data, buf, len);
/* If this is a handshake packet, use ANS_KEY instead of REQ_KEY, for two reasons:
overhead += sizeof(to->id) + sizeof(from->id);
}
- char buf[len + overhead];
+ char *buf = alloca(len + overhead);
char *buf_ptr = buf;
if(relay_supported) {
myself->in_bytes += packet.len;
route(myself, &packet);
} else {
- usleep(errors * 50000);
+ sleep_millis(errors * 50);
errors++;
if(errors > 10) {