Milter xxfi_abort()

Handle envelope abort All Milter versions

As long as all your envelope-oriented xxfi_ functions return SMFIS_CONTINUE, the Milter library guarantees that either your xxfi_eom() or xxfi_abort() function will be called. The xxfi_eom() function (Milter xxfi_eom() on page 1215), if used, is called after all the chunks of the message body have been processed with xxfi_body() (Milter xxfi_body() on page 1207). This xxfi_abort() function is called if another Milter or sendmail rejected, temporarily failed, discarded, or final-accepted the current envelope, outside the control of your Milter.

Note that xxfi_eom() and xxfi_abort() are mutually exclusive, that is, if one is called the other will not be called.

The xxfi_abort() function is called like this:

xxfi_abort(SMFICTX *ctx)

Here, ctx is the context pointer passed to all xxfi_ functions to maintain state in a multithreaded environment. Nothing else is passed. Because there is nothing left of the envelope to process, the value returned by xxfi_abort() is ignored. If no abort function is listed in the smfiDesc structure (Milter smfi_register() on page 1194), SMFIS_CONTINUE is returned by default.

Note that xxfi_abort() marks the end of the current envelope. There may be multiple envelopes per connection. The xxfi_close() function (Milter xxfi_close() on page 1208), if used, ends processing of the connection. This xxfi_abort() mirrors xxfi_eom() and should be used to deallocate any envelope-specific private data ...

Get sendmail, 4th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.