*/
nameslen = 0;
for (idp = msg->recipients; idp; idp = idp->next)
- if ((idp->val.status.mark == XMIT_ACCEPT))
+ if (idp->val.status.mark == XMIT_ACCEPT)
nameslen += (strlen(idp->id) + 1); /* string + ' ' */
- if ((*good_addresses == 0))
+ if (*good_addresses == 0)
nameslen = strlen(run.postmaster);
names = (char *)xmalloc(nameslen + 1); /* account for '\0' */
for (dp = after, sp = before; (*dp = *sp); dp++, sp++) {
if (sp[0] != '%') continue;
+ if (sp > before && sp[-1] == '\'') {
+ report(stderr, GT_("MDA option contains single-quoted %%%c expansion.\n"), sp[1]);
+ report(stderr, GT_("Refusing to deliver. Check the manual and fix your mda option.\n"));
+ free(before);
+ free(after);
+ if (from) free(from);
+ if (names) free(names);
+ return PS_SYNTAX;
+ }
+
/* need to expand? BTW, no here overflow, because in
** the worst case (end of string) sp[1] == '\0' */
if (sp[1] == 's' || sp[1] == 'T') {
close_sink(ctl, msg, TRUE);
}
+void abort_message_sink(struct query *ctl)
+/*
+ * Forcibly close the SMTP connection and re-open.
+ *
+ * Used to abort message delivery once the DATA command has been issued.
+ * Required because all text after the DATA command is considered to be
+ * part of the message body (it is impossible to issue an SMTP command
+ * to abort message delivery once the DATA command has been issued).
+ */
+{
+ smtp_close(ctl, 0);
+ smtp_setup(ctl);
+}
+
/* sink.c ends here */