Allow SQL backend for mboxlist and statuscache
Try to be nice and tell the remote client when we shutdown
Speedup services recycling upon SIGHUP
Fix crash upon master SIGHUP handling
Non-primary services share configuration data with their primary instance.
Double-freeing it is bad.
Don't close socket if not necessary
In some rare cases, a disabled (too many failures) non-primary service may
fail to be reactivated upon SIGHUP, have its 'exec' field restored and be
disabled a second time. This second time its socket is not open and we
would close the standard input file descriptor (0) which messes things up
later.
Refactored master services handling to fix various issues dealing with
non-primary services or configuration changes.
Recycle running services upon SIGHUP on master.
Master process now propagates SIGHUP to all running services, which triggers their recycling.
Handle a more graceful shutdown
Upon clean shutdown, release resources (PID file and listening sockets) early
to allow another master to start soon after. Option to terminate remaining
services after a given timeout.
Upon startup, tries to cope with a previous master doing a graceful shutdown
while still holding resources for a second.
Remain root on master process.
Allows to start new services listening on ports that need special privileges
(< 1024) upon SIGHUP.
It is also a bit more consistent since master process is still root at startup
while running START section and starting services.