diff --git a/src/etcp_connections.c b/src/etcp_connections.c index 0e3d56ca..59b65c30 100644 --- a/src/etcp_connections.c +++ b/src/etcp_connections.c @@ -133,9 +133,9 @@ static void etcp_link_send_init(struct ETCP_LINK* link, uint8_t reset) { // padding int s = rand() % (link->handshake_maxsize - link->handshake_minsize) + link->handshake_minsize; - if (s > link->mtu - dgram->noencrypt_len) s = link->mtu - dgram->noencrypt_len; - // Cap s: final encrypted = s + 46 for REQUEST (noencrypt=72) - if (s > 1472 - 46) s = 1472 - 46; // s ≤ 1426 + int s_max = (int)(link->mtu - UDP_HDR_SIZE) - (int)offset - 19; // 19=3hdr+16tag-72unenc + if (s > s_max) s = s_max; + if (s < 0) s = 0; int to_add=s-offset-UDP_HDR_SIZE - UDP_SC_HDR_SIZE; if (to_add<0) to_add=0;