Sendmail 8.13.3 Programmer's Guide

Sample Program
Milter Sample Program
Chapter 5 71
/* release private memory */
if (priv->mlfi_fname != NULL)
free(priv->mlfi_fname);
/* return status */
return rstat;
}
sfsistat
mlfi_close(ctx)
SMFICTX *ctx;
{
struct mlfiPriv *priv = MLFIPRIV;
if (priv == NULL)
return SMFIS_CONTINUE;
if (priv->mlfi_connectfrom != NULL)
free(priv->mlfi_connectfrom);
if (priv->mlfi_helofrom != NULL)
free(priv->mlfi_helofrom);
free(priv);
smfi_setpriv(ctx, NULL);
return SMFIS_CONTINUE;
}
struct smfiDesc smfilter =
{
"SampleFilter",/* filter name */
SMFI_VERSION,/* version code -- do not change */
SMFIF_ADDHDRS|SMFIF_ADDRCPT,
/* flags */
mlfi_connect,/* connection info filter */
mlfi_helo,/* SMTP HELO command filter */
mlfi_envfrom,/* envelope sender filter */
mlfi_envrcpt,/* envelope recipient filter */
mlfi_header,/* header filter */
mlfi_eoh,/* end of header */
mlfi_body,/* body block filter */
mlfi_eom,/* end of message */
mlfi_abort,/* message aborted */
mlfi_close,/* connection cleanup */
};
static void
usage(prog)
char *prog;