configureThree defaults changed in this release. Read these before upgrading.
DTLS listeners are now opt-in. The server no longer starts DTLS listeners unless --dtls is given. A deployment that relied on DTLS being up by default will stop serving DTLS clients after the upgrade, without an error. The deprecated --no-dtls / --no-dtls=false spellings are still accepted and now warn.
Stateless nonce is on by default. Challenge nonces are authenticated timestamp cookies rather than a random value stored per session, so unauthenticated UDP requests are answered from the listener without allocating a session. Two consequences:
NONCE is now 24 characters instead of 16. RFC 8489 requires clients to treat it as an opaque string of up to 128 characters, so compliant clients are unaffected. --stateless-nonce=false restores the previous behaviour.438 re-authentication round-trip, as does a retry that lands on a different instance behind a load balancer. Set --stateless-nonce-secret to the same value across a fleet to avoid both.The default log line changed. Timestamps are ISO-8601 with millisecond precision, the thread id is gone, the field delimiter is a single space instead of :, and each record now occupies exactly one line. Log shippers and any downstream parsing will need updating; the default line is now:
2026-08-02T17:32:31.297-0700 INFO Listener address to use: 127.0.0.1
--new-log-timestamp=false restores the legacy seconds-since-start counter.
Three fixes in this release came through the private advisory process. Advisories are still in preparation; this section will be updated with their identifiers once they are published.
--mobility. An authenticated client that repeatedly created a mobility allocation and disconnected had its quota released while the allocation, its relay socket and its ticket stayed alive, letting one user hold allocations well past --user-quota / --total-quota until the relay port range was exhausted. The charge is now held until final teardown. Regression coverage: examples/run_tests_mobility_quota.sh.DTLSv1_listen(), so an unanswered ClientHello leaves no state behind. This completes the hardening begun in 4.16.0.EVEN-PORT with the R bit clear leaked relay ports. The odd sibling port was reserved even when the client had not asked for it and was never released, so a server would eventually refuse new allocations that requested EVEN-PORT.Upgrading is recommended for anyone running --mobility, DTLS, or accepting EVEN-PORT allocations.
get_user_key error paths--dtls is given--simple-log where it is a no-op alongside --log-file=stdoutlocaltime() data race in the loggerPlease log in to add feedback.
This update has been submitted for testing by robert.
This update's test gating status has been changed to 'ignored'.
This update has been pushed to testing.
robert edited this update.
This update has been submitted for stable by bodhi.
This update has been pushed to stable.