It seems as the the unix socket needs to be cleaned up manually during debugging and unforseen dkim-filter terminations.
Can the signal handler or exit routine remove the unix socket (if used)?
Logged In: YES
The signal handler in libmilter, which covers HUP, INT and TERM signals, does arrange to shut down and clean up the socket during normal terminations. In addition the parent process (when AutoRestart is enabled) will attempt to delete the socket if there appears to be nothing listening on it before restarting the child.
It's not really possible to have the filter delete its socket on abnormal terminations, especially SIGKILL. If the process has become unstable due to memory corruption or any of a number of other causes, the process will be terminated by the kernel without a safe opportunity to clean up the socket.
Instead, the filter could check to see if the socket is "live" before starting. This is a simple matter of recycling the AutoRestart socket check for the general case.
I'll attach a patch that does so, though I haven't really tested it yet.
Proposed patch #1
Try the attached patch. It's against the 2.5.0 Betas but
you should be able to massage it into the 2.4.4 code
easily enough. If not, let me know and I'll try to
do a back-port.
File Added: PATCH
Patch included in 2.5.0, now released.
Sign up for the SourceForge newsletter:
You seem to have CSS turned off.
Please don't fill out this field.