git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Testsuite: add testcase for Redis. Bug 1755
[exim.git]
/
src
/
src
/
spool_in.c
diff --git
a/src/src/spool_in.c
b/src/src/spool_in.c
index 77d1321ec705e16e198b1ef8b417ba9abd4987f6..59192ef30757a4e50adffc200517522d2f15074c 100644
(file)
--- a/
src/src/spool_in.c
+++ b/
src/src/spool_in.c
@@
-2,7
+2,7
@@
* Exim - an Internet mail transport agent *
*************************************************/
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 201
2
*/
+/* Copyright (c) University of Cambridge 1995 - 201
5
*/
/* See the file NOTICE for conditions of use and distribution. */
/* Functions for reading spool files. When compiling for a utility (eximon),
/* See the file NOTICE for conditions of use and distribution. */
/* Functions for reading spool files. When compiling for a utility (eximon),
@@
-288,21
+288,28
@@
tls_in.certificate_verified = FALSE;
tls_in.dane_verified = FALSE;
# endif
tls_in.cipher = NULL;
tls_in.dane_verified = FALSE;
# endif
tls_in.cipher = NULL;
-tls_in.ourcert = NULL;
-tls_in.peercert = NULL;
+# ifndef COMPILE_UTILITY /* tls support fns not built in */
+tls_free_cert(&tls_in.ourcert);
+tls_free_cert(&tls_in.peercert);
+# endif
tls_in.peerdn = NULL;
tls_in.sni = NULL;
tls_in.ocsp = OCSP_NOT_REQ;
#endif
#ifdef WITH_CONTENT_SCAN
tls_in.peerdn = NULL;
tls_in.sni = NULL;
tls_in.ocsp = OCSP_NOT_REQ;
#endif
#ifdef WITH_CONTENT_SCAN
+spam_bar = NULL;
+spam_score = NULL;
spam_score_int = NULL;
#endif
spam_score_int = NULL;
#endif
-#ifdef EXPERIMENTAL_DSN
+#if defined(SUPPORT_I18N) && !defined(COMPILE_UTILITY)
+message_smtputf8 = FALSE;
+message_utf8_downconvert = 0;
+#endif
+
dsn_ret = 0;
dsn_envid = NULL;
dsn_ret = 0;
dsn_envid = NULL;
-#endif
/* Generate the full name and open the file. If message_subdir is already
set, just look in the given directory. Otherwise, look in both the split
/* Generate the full name and open the file. If message_subdir is already
set, just look in the given directory. Otherwise, look in both the split
@@
-493,17
+500,11
@@
for (;;)
case 'd':
if (Ustrcmp(p, "eliver_firsttime") == 0)
deliver_firsttime = TRUE;
case 'd':
if (Ustrcmp(p, "eliver_firsttime") == 0)
deliver_firsttime = TRUE;
-#ifdef EXPERIMENTAL_DSN
/* Check if the dsn flags have been set in the header file */
else if (Ustrncmp(p, "sn_ret", 6) == 0)
/* Check if the dsn flags have been set in the header file */
else if (Ustrncmp(p, "sn_ret", 6) == 0)
- {
- dsn_ret= atoi(big_buffer + 8);
- }
+ dsn_ret= atoi(CS big_buffer + 8);
else if (Ustrncmp(p, "sn_envid", 8) == 0)
else if (Ustrncmp(p, "sn_envid", 8) == 0)
- {
dsn_envid = string_copy(big_buffer + 11);
dsn_envid = string_copy(big_buffer + 11);
- }
-#endif
break;
case 'f':
break;
case 'f':
@@
-574,8
+575,16
@@
for (;;)
if (Ustrncmp(p, "ender_set_untrusted", 19) == 0)
sender_set_untrusted = TRUE;
#ifdef WITH_CONTENT_SCAN
if (Ustrncmp(p, "ender_set_untrusted", 19) == 0)
sender_set_untrusted = TRUE;
#ifdef WITH_CONTENT_SCAN
+ else if (Ustrncmp(p, "pam_bar ", 8) == 0)
+ spam_bar = string_copy(big_buffer + 10);
+ else if (Ustrncmp(p, "pam_score ", 10) == 0)
+ spam_score = string_copy(big_buffer + 12);
else if (Ustrncmp(p, "pam_score_int ", 14) == 0)
spam_score_int = string_copy(big_buffer + 16);
else if (Ustrncmp(p, "pam_score_int ", 14) == 0)
spam_score_int = string_copy(big_buffer + 16);
+#endif
+#if defined(SUPPORT_I18N) && !defined(COMPILE_UTILITY)
+ else if (Ustrncmp(p, "mtputf8", 7) == 0)
+ message_smtputf8 = TRUE;
#endif
break;
#endif
break;
@@
-600,6
+609,15
@@
for (;;)
break;
#endif
break;
#endif
+#if defined(SUPPORT_I18N) && !defined(COMPILE_UTILITY)
+ case 'u':
+ if (Ustrncmp(p, "tf8_downcvt", 11) == 0)
+ message_utf8_downconvert = 1;
+ else if (Ustrncmp(p, "tf8_optdowncvt", 15) == 0)
+ message_utf8_downconvert = -1;
+ break;
+#endif
+
default: /* Present because some compilers complain if all */
break; /* possibilities are not covered. */
}
default: /* Present because some compilers complain if all */
break; /* possibilities are not covered. */
}
@@
-649,10
+667,8
@@
for (recipients_count = 0; recipients_count < rcount; recipients_count++)
{
int nn;
int pno = -1;
{
int nn;
int pno = -1;
-#ifdef EXPERIMENTAL_DSN
int dsn_flags = 0;
uschar *orcpt = NULL;
int dsn_flags = 0;
uschar *orcpt = NULL;
-#endif
uschar *errors_to = NULL;
uschar *p;
uschar *errors_to = NULL;
uschar *p;
@@
-729,7
+745,7
@@
for (recipients_count = 0; recipients_count < rcount; recipients_count++)
{
int flags;
{
int flags;
-#if
defined(EXPERIMENTAL_DSN) &&
!defined (COMPILE_UTILITY)
+#if !defined (COMPILE_UTILITY)
DEBUG(D_deliver) debug_printf("**** SPOOL_IN - Exim 4 standard format spoolfile\n");
#endif
DEBUG(D_deliver) debug_printf("**** SPOOL_IN - Exim 4 standard format spoolfile\n");
#endif
@@
-745,11
+761,10
@@
for (recipients_count = 0; recipients_count < rcount; recipients_count++)
{
p -= len;
errors_to = string_copy(p);
{
p -= len;
errors_to = string_copy(p);
- }
+ }
}
*(--p) = 0; /* Terminate address */
}
*(--p) = 0; /* Terminate address */
-#ifdef EXPERIMENTAL_DSN
if ((flags & 0x02) != 0) /* one_time data exists */
{
int len;
if ((flags & 0x02) != 0) /* one_time data exists */
{
int len;
@@
-760,13
+775,12
@@
for (recipients_count = 0; recipients_count < rcount; recipients_count++)
{
p -= len;
orcpt = string_copy(p);
{
p -= len;
orcpt = string_copy(p);
- }
+ }
}
*(--p) = 0; /* Terminate address */
}
*(--p) = 0; /* Terminate address */
-#endif /* EXPERIMENTAL_DSN */
}
}
-#if
defined(EXPERIMENTAL_DSN) &&
!defined(COMPILE_UTILITY)
+#if !defined(COMPILE_UTILITY)
else
{ DEBUG(D_deliver) debug_printf("**** SPOOL_IN - No additional fields\n"); }
else
{ DEBUG(D_deliver) debug_printf("**** SPOOL_IN - No additional fields\n"); }
@@
-780,15
+794,13
@@
for (recipients_count = 0; recipients_count < rcount; recipients_count++)
DEBUG(D_deliver) debug_printf("**** SPOOL_IN - address: |%s| errorsto: |%s|\n",
big_buffer, errors_to);
}
DEBUG(D_deliver) debug_printf("**** SPOOL_IN - address: |%s| errorsto: |%s|\n",
big_buffer, errors_to);
}
-#endif
/* EXPERIMENTAL_DSN */
+#endif
recipients_list[recipients_count].address = string_copy(big_buffer);
recipients_list[recipients_count].pno = pno;
recipients_list[recipients_count].errors_to = errors_to;
recipients_list[recipients_count].address = string_copy(big_buffer);
recipients_list[recipients_count].pno = pno;
recipients_list[recipients_count].errors_to = errors_to;
-#ifdef EXPERIMENTAL_DSN
recipients_list[recipients_count].orcpt = orcpt;
recipients_list[recipients_count].dsn_flags = dsn_flags;
recipients_list[recipients_count].orcpt = orcpt;
recipients_list[recipients_count].dsn_flags = dsn_flags;
-#endif
}
/* The remainder of the spool header file contains the headers for the message,
}
/* The remainder of the spool header file contains the headers for the message,