TinyMUX 2.13.0.15 released

1 view
Skip to first unread message

Brazil

unread,
Jul 15, 2026, 2:27:12 AM (8 days ago) Jul 15
to tinymux
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Subject: [ANNOUNCE] TinyMUX 2.13.0.15 released

TinyMUX 2.13.0.15 is now available. This is a stability point release
on the 2.13 line: it fixes a networking descriptor leak, a
connect-time crash loop, and two conditions that could hang or crash
the server. No softcode or configuration changes are required.

Changes since 2.13.0.14
- ------------------------------

- - Fixed a file-descriptor leak in the GANL epoll engine. The
  abnormal-disconnect path (a client RST or hangup) emitted a close
  event but never closed the socket or removed it from the engine, so
  every abrupt disconnect leaked one descriptor and a busy game
  accumulated thousands of orphaned sockets over its uptime. The
  accepted socket is also now closed when connection setup fails to
  associate its context.
- - Fixed a connect-time crash loop on a truncated or malformed
  A_LOGINDATA. decrypt_logindata() dereferenced a null field pointer,
  and unset_signals() spun forever on a missing loop increment,
  pinning the process at 100% CPU and defeating crash-driven @restart
  recovery. Field reads now fail safe and the signal-reset loop is
  fixed.
- - Fixed @restart truncating the 64-bit connect/idle/start times
  through the 32-bit dbref channel in restart.db (Y2038), which
  corrupted the WHO "On For" column for any session spanning a
  restart. The times are now serialized as 64-bit and restart.db is
  bumped to version 5 (older versions still read).
- - Fixed a rare fork() deadlock that could hang the server. The
  post-fork database-dump and stubslave children took a std::mutex
  held by the alarm thread; a child that forked during that brief
  window inherited the mutex locked with no owner and self-deadlocked
  before exec, and a later stubslave reboot then blocked the parent
  forever in waitpid(), parking the whole network loop. The children
  now reset a lock-free flag instead of taking the mutex, and the
  stubslave waitpid() calls are bounded (poll, then SIGKILL).

Download:

Full source (tar.gz):
mux-2.13.0.15.unix.tar.gz
SHA256: 1fc3b30e07e329324000baad242e0aab1fb9ba2c639cff321f517fe49ed4d889

Full source (tar.bz2):
mux-2.13.0.15.unix.tar.bz2
SHA256: 433213aa6b488e70d7a8a3f151028cd08bbcb1384baad751e2ec442ebe167ded

Patch from 2.13.0.14:
mux-2.13.0.14-2.13.0.15.unix.patch.gz
SHA256: ea2e297dd1e66e9c8e6061710ca9fba09a93966d311e08e21cdf0b4f9e11b4ed

All files are GPG-signed (.asc).

Report bugs to brazi...@gmail.com.

- -- Brazil

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEE8GWFNwJrhRGk25uvF80K5PxQP7EFAmpXKAEACgkQF80K5PxQ
P7Hd/hAAq6hs1XzVsJ+6LlbjUwpw/16/B3hLB3hV271jThw4v5mLDUPQxgWYPwAH
D4aQYwFDsq7vRx81N0yM47UB3rLYiaCThRGUKfft8JsN0tup9OHnrK25LXBgZN52
SWtEXsC8XjAAkCr5rUOVlAhv4R5W08Ow6OTebVXC6WGjmbMebfjAv6zcd+hj7LCU
TaPZQZS9CN61OfNnGU55ntSkqSIaE8DS0f17u7zhHGvje3Q94PfFeof+stuu/bEJ
oedGtjqzoKHd04/fh1u6PMzcQE09juSuDOiQcasi5YkMQcqgDYM5p5Dh3nI0mX58
S/22vxe3OarkLQuFWoWFDqR4iGNANSzo0V5mY0i3F7ovXG2oFSLjWEB6V7/FdvxU
sNliJ6ZaWZSAIlBtlQWdkpmSF05MVW98YGeMgYhTDh5iZyNhsvTnopbjPmJSbP1S
qzV9VTFLBcqimp+j9XsPqQ5zuKysTZQa0fVGnaPXMo4WAWb0PNqyygGWxwFLly8S
OD1ucWn5SW+X8+bzjnbsL9YMRjHIBZiu51YelkwbH1X7drh1bJtawNz5tx4+hsB1
5z6hHO6uygK2nM2sZScbFXrj3fihiw6UrBJ4QimSd1JNDw+Sfw1peQs7vU9uhO62
BYPO1s9TTAjEEd3Xsam8yY2usG/JaVIzoZGbndDT1Y2RuoxEpus=
=G7at
-----END PGP SIGNATURE-----

Reply all
Reply to author
Forward
0 new messages