-
Fix bug where a child's stderr could be only partly read.
-
Fix bug where stderr could be closed twice.
-
Introduce a test suite for (unusual) child process failure modes.
-
Ensure that all of a child processes's stderr output is read, even if another failure (e.g. the child prematurely closing stdin) occurs beforehand. This makes debugging failing child processes easier.
-
Treat child processes killed by a signal as unsuccessful.
-
Introduce a timeout for child processes that, after seemingly processing a file correctly (e.g. consuming all input, closing the relevant file descriptors), then stall before exiting.
- On Linux, ensure that a pselect() timeout leads to trying to (re)send messages.
- Heavily simplify queue processing. As well as making the code easier to understand, extsmail is now more aggressive in trying to send messages. Failure to send a message now causes the next iteration through the queue to start from a random position, ensuring that extsmail can't become stuck on a (temporarily or persistently) unsendable message, no matter the iteration order of the underlying spool directory.
- Fix a bug whereby a failure in executing a child process could cause an individual mail to be sent more than once and/or an unbounded number of child processes to persist indefinitely.
-
Have autoconf decide whether to use lex/yacc or flex/bison.
-
Add pledge support for extsmail and extsmaild on OS's that support it.
-
If a child process fails, but doesn't print anything to stderr, then format the result more nicely.
-
Build correctly on Linux distributions that identify as GNU rather than Linux.
-
extsmaild -v now prints extsmail's version number.
-
Suggest using "-t" with sendmail in examples (some sendmail clones require this switch).
-
Use "-z,now" when linking.
-
Fix two minor compiler warnings.
- Build fix for more recent C compilers.
-
Reload configuration file when SIGHUP is received.
-
Added -t option to check a configuration file without running extsmaild.
-
Be more careful to free all file handles.
- Fix bug which could temporarily cause undue CPU to be consumed when a large file send was cut off in the middle. This didn't prevent mail being sent correctly in the end, but was ugly.
-
Fix bug which caused extsmaild to consume larger amounts of CPU than strictly necessary (a normal user should now be able to run extsmaild for several days before exceeding 1 second of CPU usage).
-
Fix reporting of sent mail on Linux (which previously sent mail correctly, but incorrectly reported failure even when the send was successful).
-
Various fixes to make OS packager's lives easier.
-
Significant code reorganisation to improve readability.
-
Several minor bug fixes spotted by static analysis tools (including memory leaks).
-
More robust handling of corrupt message files.
- Time out stalled sendmail processes. If a sendmail process hasn't read or written any data for 60 seconds, it is killed and later retried. This stops a stalled sendmail from perpetually blocking extsmail. Although rare, this could happen e.g. when an interface went down while an SSH session was open.
-
Ensure that all messages which can be sent are sent. Some messages may temporarily be unsendable (e.g. because of size) and shouldn't hold up others.
-
Use exponential backoff when retrying. Quite often, a send failure is just a brief blip, so retry quickly, and as retries fail, increase the length of time until the next retry.
-
Add user-configurable notifications for successful / unsuccessful sends. Allows users to easily be notified (e.g. via xosd) if mail has been sent and, if not, how long it has been since everything was sent.
-
Various portability improvements.
-
Improvements to batch mode to bring it in line with daemon mode.
-
Minor bug fixes.
-
Documentation fixes.
-
OS X compile fixes.
-
Fix overly-restrictive configuration permissions check.
-
Recover gracefully from some errors that were previously fatal.
-
Fix build error when using bison.
-
Minor documentation fixes.
- Fix two frees of possibly uninitialised pointers.
-
extsmaild's modes are now specified via the "-m " switch. In particular the behaviour of the "-d" switch is now obtained with "-m daemon".
-
More intelligent detection of whether a previous instance of extsmaild is running or not.
-
Systematically use syslog.
-
Fix possible race condition between extsmail and extsmaild.
-
Correctly handle SIGPIPE.
-
Make Linux support on a par with BSD (using inotify).
-
Minor error handling / reporting changes.
-
Adds 'timeout' feature to externals.
-
Fixes bug where exec'd externals first parameter was not correctly set.
- First public release.