rather than auto-include the support
# Uncomment the following line to add support for talking to dccifd. This
# defaults the socket path to /usr/local/dcc/var/dccifd.
# Uncomment the following line to add support for talking to dccifd. This
# defaults the socket path to /usr/local/dcc/var/dccifd.
-# Doing so will also explicitly turn on the WITH_CONTENT_SCAN option.
+# This support also requires WITH_CONTENT_SCAN enabled.
address_item *addr, int level, BOOL *epp, uschar **user_msgptr,
uschar **log_msgptr, int *basic_errno)
{
address_item *addr, int level, BOOL *epp, uschar **user_msgptr,
uschar **log_msgptr, int *basic_errno)
{
-uschar *user_message = NULL;
-uschar *log_message = NULL;
+uschar * user_message = NULL;
+uschar * log_message = NULL;
-#ifdef WITH_CONTENT_SCAN
-int sep = -'/';
-#endif
for (; cb; cb = cb->next)
{
for (; cb; cb = cb->next)
{
- #ifdef EXPERIMENTAL_DCC
case ACLC_DCC:
{
/* Separate the regular expression and any optional parameters. */
const uschar * list = arg;
case ACLC_DCC:
{
/* Separate the regular expression and any optional parameters. */
const uschar * list = arg;
- uschar *ss = string_nextinlist(&list, &sep, NULL, 0);
+ int sep = -'/';
+ uschar * ss = string_nextinlist(&list, &sep, NULL, 0);
/* Run the dcc backend. */
rc = dcc_process(&ss);
/* Modify return code based upon the existence of options. */
/* Run the dcc backend. */
rc = dcc_process(&ss);
/* Modify return code based upon the existence of options. */
rc = FAIL; /* FAIL so that the message is passed to the next ACL */
break;
}
rc = FAIL; /* FAIL so that the message is passed to the next ACL */
break;
}
- #ifdef WITH_CONTENT_SCAN
+#ifdef WITH_CONTENT_SCAN
case ACLC_DECODE:
rc = mime_decode(&arg);
break;
case ACLC_DECODE:
rc = mime_decode(&arg);
break;
case ACLC_LOG_REJECT_TARGET:
{
case ACLC_LOG_REJECT_TARGET:
{
- int logbits = 0;
- int sep = 0;
- const uschar *s = arg;
- uschar * ss;
- while ((ss = string_nextinlist(&s, &sep, NULL, 0)))
+ int logbits = 0, sep = 0;
+ const uschar * s = arg;
+
+ for (uschar * ss; ss = string_nextinlist(&s, &sep, NULL, 0); )
{
if (Ustrcmp(ss, "main") == 0) logbits |= LOG_MAIN;
else if (Ustrcmp(ss, "panic") == 0) logbits |= LOG_PANIC;
{
if (Ustrcmp(ss, "main") == 0) logbits |= LOG_MAIN;
else if (Ustrcmp(ss, "panic") == 0) logbits |= LOG_PANIC;
- #ifdef WITH_CONTENT_SCAN
+#ifdef WITH_CONTENT_SCAN
case ACLC_MALWARE: /* Run the malware backend. */
{
/* Separate the regular expression and any optional parameters. */
const uschar * list = arg;
case ACLC_MALWARE: /* Run the malware backend. */
{
/* Separate the regular expression and any optional parameters. */
const uschar * list = arg;
- uschar * ss = string_nextinlist(&list, &sep, NULL, 0);
- uschar * opt;
+ int timeout = 0, sep = -'/';
+ uschar * ss = string_nextinlist(&list, &sep, NULL, 0);
- while ((opt = string_nextinlist(&list, &sep, NULL, 0)))
+ for (uschar * opt; opt = string_nextinlist(&list, &sep, NULL, 0); )
if (strcmpic(opt, US"defer_ok") == 0)
defer_ok = TRUE;
else if ( strncmpic(opt, US"tmo=", 4) == 0
if (strcmpic(opt, US"defer_ok") == 0)
defer_ok = TRUE;
else if ( strncmpic(opt, US"tmo=", 4) == 0
case ACLC_MIME_REGEX:
rc = mime_regex(&arg, textonly);
break;
case ACLC_MIME_REGEX:
rc = mime_regex(&arg, textonly);
break;
case ACLC_QUEUE:
if (is_tainted(arg))
case ACLC_QUEUE:
if (is_tainted(arg))
{
/* Separate the regular expression and any optional parameters. */
const uschar * list = arg;
{
/* Separate the regular expression and any optional parameters. */
const uschar * list = arg;
- uschar *ss = string_nextinlist(&list, &sep, NULL, 0);
+ int sep = -'/';
+ uschar * ss = string_nextinlist(&list, &sep, NULL, 0);
rc = spam(CUSS &ss);
/* Modify return code based upon the existence of options. */
rc = spam(CUSS &ss);
/* Modify return code based upon the existence of options. */
- /* WITH_CONTENT_SCAN is another special case: it must be set if it or
- EXPERIMENTAL_DCC is set. */
-
- if (strcmp(name, "WITH_CONTENT_SCAN") == 0)
- {
- char *wcs = getenv("WITH_CONTENT_SCAN");
- char *dcc = getenv("EXPERIMENTAL_DCC");
- fprintf(new, wcs || dcc
- ? "#define WITH_CONTENT_SCAN yes\n"
- : "/* WITH_CONTENT_SCAN not set */\n");
- continue;
- }
-
/* DISABLE_DKIM is special; must be forced if DISABLE_TLS */
if (strcmp(name, "DISABLE_DKIM") == 0)
{
/* DISABLE_DKIM is special; must be forced if DISABLE_TLS */
if (strcmp(name, "DISABLE_DKIM") == 0)
{
* wbreyha@gmx.net
* See the file NOTICE for conditions of use and distribution.
*
* wbreyha@gmx.net
* See the file NOTICE for conditions of use and distribution.
*
- * Copyright (c) The Exim Maintainers 2015 - 2021
+ * Copyright (c) The Exim Maintainers 2015 - 2022
*/
/* Code for calling dccifd. Called from acl.c. */
#include "exim.h"
#ifdef EXPERIMENTAL_DCC
*/
/* Code for calling dccifd. Called from acl.c. */
#include "exim.h"
#ifdef EXPERIMENTAL_DCC
+#ifndef WITH_CONTENT_SCAN
+# error EXPERIMENTAL_DCC requires WITH_CONTENT_SCAN
+#endif
+
#include "dcc.h"
#include "unistd.h"
#include "dcc.h"
#include "unistd.h"