You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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