#endif
#ifdef EXPERIMENTAL_DMARC
-#include "dmarc.h"
+# include "dmarc.h"
#endif /* EXPERIMENTAL_DMARC */
/*************************************************
/* reset optin string pointer for next recipient */
bmi_current_optin = NULL;
#endif
+#ifdef EXPERIMENTAL_DSN
+recipients_list[recipients_count].orcpt = NULL;
+recipients_list[recipients_count].dsn_flags = 0;
+#endif
recipients_list[recipients_count++].errors_to = NULL;
}
case 1: /* After written "\n" */
if (ch == '.') { ch_state = 3; continue; }
+ if (ch == '\r') { ch_state = 2; continue; }
if (ch != '\n') ch_state = 0; else linelength = -1;
break;
{
case ACL_WHERE_DKIM:
case ACL_WHERE_MIME:
- case ACL_WHERE_DATA: if (cutthrough_fd >= 0 && (acl_removed_headers || acl_added_headers))
+ case ACL_WHERE_DATA:
+ if (cutthrough_fd >= 0 && (acl_removed_headers || acl_added_headers))
{
log_write(0, LOG_MAIN|LOG_PANIC, "Header modification in data ACLs"
- "will not take effect on cutthrough deliveries");
+ " will not take effect on cutthrough deliveries");
return;
}
}
{
DEBUG(D_receive|D_acl) debug_printf(">>Headers removed by %s ACL:\n", acl_name);
- for (h = header_list; h != NULL; h = h->next)
+ for (h = header_list; h != NULL; h = h->next) if (h->type != htype_old)
{
- uschar *list;
- BOOL include_header;
-
- if (h->type == htype_old) continue;
-
- include_header = TRUE;
- list = acl_removed_headers;
-
+ uschar * list = acl_removed_headers;
int sep = ':'; /* This is specified as a colon-separated list */
uschar *s;
uschar buffer[128];
- while ((s = string_nextinlist(&list, &sep, buffer, sizeof(buffer)))
- != NULL)
- {
- int len = Ustrlen(s);
- if (header_testname(h, s, len, FALSE))
+
+ while ((s = string_nextinlist(&list, &sep, buffer, sizeof(buffer))))
+ if (header_testname(h, s, Ustrlen(s), FALSE))
{
h->type = htype_old;
DEBUG(D_receive|D_acl) debug_printf(" %s", h->text);
}
- }
}
acl_removed_headers = NULL;
DEBUG(D_receive|D_acl) debug_printf(">>\n");
if (rc == OK)
{
uschar temp_path[1024];
- int n;
struct dirent *entry;
DIR *tempdir;
message_id);
tempdir = opendir(CS temp_path);
- n = 0;
do
{
entry = readdir(tempdir);