Version history:

Version 1.0: August 23, 2017
Initial production release

Version 1.1: January 22, 2018
[FEATURE] Suport Ubuntu Linux
[FEATURE] SASL support.  Binary connections now suport SASL validation.
[BUGFIX] Remove existing domain socket file

Version 1.2: August 14, 2018:
[FEATURE] SASL support for external security.  See https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:lsmcd:sasl for full documentation.
[FEATURE] Separation of individual user data.  See https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:lsmcd:sasl_secure_user_data
[FEATURE] Support for cPanel interface.  See https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:lsmcd:user_cpanel
[IMPROVEMENT] Better sample node.conf files.

Version 1.3: January 22, 2019
[IMPROVEMENT] Support for systemd services; systemctl program for service start, stop, etc.
[BUGFIX] Fixed crashes in Ubuntu by creating pid file in temporary directory.

Version 1.4: March 28, 2019
[IMPROVEMENT] Better logging
[BUGFIX] Tolerate incorrect command line parameters to lsmcd

Version 1.4.1: May 7, 2019
[IMPROVEMENT] Log entry with version number and include VERSION.txt file.

Version 1.4.2: July 3, 2019
[IMPROVEMENT] Better error messages when there are config file problems.

Version 1.4.3: July 8, 2019
[BUGFIX] Report correct version number when lsmcd is run with -v

Version 1.4.4: July 10, 2019
[BUGFIX] Updated github to the correct SASL updated version.

Version 1.4.5: August 6, 2019
[BUGFIX] Fixed default node.conf file (from v1.4.4) which was broken by incomplete merge.

Version 1.4.6: October 10, 2019
[IMPROVEMENT] Added a python stress test program (stress.py)
[BUGFIX] Don't put a bad command line into the system list.

Version 1.4.7: October 22, 1019
[BUGFIX] Fixed a leakage between users when SASL user separation is enabled.

Version 1.4.8: November 5, 2019
Turned off SASL in the default user configuration file.

Version 1.4.9: November 7, 2019
[IMPROVEMENT] Added new configuration option: Cached.SaslDB.  You can set it to an independent SASL database which you can control with the regular SASL programs (saslpasswd2 and sasldblistusers2) with the -f option to specify the database name.  You can then set the owner to be the LSMCD user and give this user the sole permission to access the file.  Lets /etc/sasldb2 be available for other program's use.
[IMPROVEMENT] stress.py with no parameters will set one value and finish rather than fail attempting to perform a full stress test with SASL.

Version 1.4.10: November 26, 2019
[IMPROVEMENT] Support ASCII accesses using the anonymous user if the Cached.Anonymous=True
[IMPROVEMENT] Cleaned up code to compile without warnings with the newer gcc compilers.
[NOTE] This version is compiled in a newer development environment.  If you have problems recompiling the software, run `autoreconf --install --force` to rebuild the environment. 

Version 1.4.11: November 26, 2019
[BUGFIX] `make install` leaves your existing installation and does not step on your configuration.

Version 1.4.12: August 25, 2020
[BUGFIX] Fixed hash table bug.

Version 1.4.13: September 14, 2020
[BUGFIX] Cleaned up lsmcdctrl so it does not run the program usleep and works correctly

Version 1.4.14: November 12, 2020
[BUGFIX] Correctly support 0 to disable Cached.ValMaxSz for maximum data size validation.
[BUGFIX] Correctly fold machine name to lower case to match SASL machine name storage.

VERSION 1.4.15 February 8, 2021
[BUGFIX] Missing response for binary GETQ and GETKQ can cause long delays in LSCACHE_WP, fixed.
[BUGFIX] Correctly switch from binary to text mode and back in persistent connections
[IMPROVEMENT] Reduced the severity of a number of messages from INFO to DEBUG cleaning up the log as well as adding additional debugging messages to aid in future issues.

VERSION 1.4.16 March 3, 2021
[IMPROVEMENT] Improve the text on a few error messages.
[IMPROVEMENT] Remove unnecessary code in the SASL module.
[IMPROVEMENT] Support python3 in stress.py as bmemcached no longer supports python2.

VERSION 1.4.17 March 16, 2021
[BUGFIX] Get rid of 'FATAL ERROR alloc2 cross large page boundary' messages.
[IMPROVEMENT] Log messages closer to the time they occur.

VERSION 1.4.18 March 23, 2021
[BUGFIX] Sporatic timeout turned out to be related to multiple packets in a single receive.  Fixed.

VERSION 1.4.19 March 26, 2021
[BUGFIX] Reverted incorrect bug fix in single receive.
[IMPROVEMENT] Core dumps will write to the /tmp/lsmcd directory

VERSION 1.4.20 April 13, 2021
[BUGFIX] Only the oldest core dump will be preserved if you have cores written by pid enabled
[BUGFIX] NULL ptr in find should no longer crash.
[BUGFIX] Exceeding the buffer size should not cause a crash in tracing
[BUGFIX] Avoid using NULL freelist bot size.
[BUGFIX] Handle NULL pointer in an iterator allocation.
[BUGFIX] Avoid additional NULL compares during hash check.
[BUGFIX] Address NULL pointer in TidMgr.
[BUGFIX] Change a number of assertions to tests.

VERSION 1.4.21 May 25, 2021
[IMPROVEMENT] Add a log entry when the program crashes.

VERSION 1.4.22 June 1, 2021
[BUGFIX] Binary 0 terminate SASL mechanism which addresses an issue with PHP unable to authenticate.
[BUGFIX] Fix a crash if there's a memory shortage in the hash map.
[BUGFIX] Reduce the opportunity for a crash in LsShmPool.
[BUGFIX] Reduce the opportunity for crashes in LsShmTidMgr.
[BUGFIX] Reduce the opportunity for crashes in LsShmHash.

VERSION 1.4.23 June 17, 2021
[BUGFIX] No longer report incorrect messages "Received length < header minimum"

VERSION 1.4.24 June 23, 2021
[BUGFIX] A number of significant fixes which should reduce crashes.
[IMPROVEMENT] Add address sanitizer to the debug build (enable Sanitizer in CMakeLists.txt 'cmake .', make clean, make).  You'll need to install cmake, libasan, llvm.  Doc has been updated for this.

VERSION 1.4.25 June 29, 2021
[BUGFIX] Several unnecessary assertions removed.
[BUGFIX] Detect NULL in chkMemSz.
[BUGFIX] Removed assertion in ls_atomic_spin_pidwait.
[BUGFIX] Fixed a regression introduced in 1.4.24 where the database size will not be increased correctly.
[IMPROVEMENT] USR1 signal can be used to restart the service.
[IMPROVEMENT] On the detection of corrupt shared memory, it is rebuilt.

VERSION 1.4.26 July 8, 2021
[BUGFIX] A response is generated for a GETKQ.
[BUGFIX] Response avoids timeouts for SET.
[IMPROVEMENT] On the detection of a corrupt database size, it is rebuilt.

VERSION 1.4.27 August 2, 2021
[BUGFIX] Ignore a SIGPIPE rather than process it.

VERSION 1.4.28 August 9, 2021
[BUGFIX] Fixed a few small bugs with NULL pointer references.
[BUGFIX] Added additional code to detect data corruption.

VERSION 1.4.29 September 1, 2021
[FEATURE] Report PID rather than user in log.
[FEATURE] A debug validation option has been added (DBG.VALIDATE=TRUE) - only usable in -d mode.
[FEATURE] stress.py can now specify the server IP:PORT with the --r parameter
[FEATURE] You can specify a single worker by setting CachedProcCnt=0
[BUGFIX] During rehash, turn assertion into rebuilds avoiding crashes.
[BUGFIX] Fixed single worker bugs in listening.

VERSION 1.4.30 February 9, 2022
[BUGFIX] Address crashes caused by incorrect file size in hash table shared memory

VERSION 1.4.31 March 7, 2022
[BUGFIX] Fix bug where systemd will take down LSMCD when it tries to recover after a crash.  This will make systemd's status misleading - use `ps -ef|grep lsmcd` as the method to determine if lsmcd is running

VERSION 1.4.32 
[BUGFIX] Fixed a bug in the cPanel interface where the uninstall was not removing the icon from the Jupiter theme.

VERSION: 1.4.33 November 14, 2022
[BUGFIX] Detect when the SHM reports file size: 0 and rebuilds the database.
[UPDATE]: cPanel interface uses the newest lsmcd icon.

VERSION: 1.4.34 June 7, 2023
[BUGFIX] Detect when the SHM asserts a number of conditions and rebuilds the database.

VERSION: 1.4.35 August 14, 2023
[FEATURE] Move location of lsmcd_cpanel_interface to litespeedtech.

VERSION: 1.4.36 August 15, 2023
[FEATURE] Add Ubuntu support to lsmcd cPanel install.

VERSION: 1.4.37 November 17, 2023
[IMPROVEMENT] Report reason why a listener won't start correctly (like "Address already in use").
[BUGIX] Detect when DB CAS or SASL settings don't match configuration and rebuild database.

VERSION: 1.4.38 March 13, 2024
[BUGFIX] If program crashes, automatically rebuild databases to avoid infinite loop.
