summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhil Pennock <pdp@exim.org>2011-01-22 18:33:45 -0500
committerPhil Pennock <pdp@exim.org>2011-01-22 18:33:45 -0500
commit6f0c431a792c79870266913600a71f3be21ee620 (patch)
tree1a6b0481b0455a7068c8e15614cd784521188cc5 /src
parentfa1fce6bfaeba9f94c90d279bb8f66f5b38db349 (diff)
Bugzilla 1041: pull patch id=425, DCC fixes.
DCC return codes were not always correct. Patch from DCC code maintainer, Wolfgang Breyha.
Diffstat (limited to 'src')
-rw-r--r--src/src/dcc.c3
-rw-r--r--src/src/receive.c12
2 files changed, 14 insertions, 1 deletions
diff --git a/src/src/dcc.c b/src/src/dcc.c
index ff760bcf6..6de5102d0 100644
--- a/src/src/dcc.c
+++ b/src/src/dcc.c
@@ -512,7 +512,8 @@ int dcc_process(uschar **listptr) {
debug_printf("Before returning to exim main process:\nreturn_text = %s - retval = %d\ndcc_result = %s\n", dcc_return_text, retval, dcc_result);
(void)fclose(data_file);
- return retval;
+ dcc_rc = retval;
+ return dcc_rc;
}
#endif
diff --git a/src/src/receive.c b/src/src/receive.c
index c4fb31ea7..914b1d281 100644
--- a/src/src/receive.c
+++ b/src/src/receive.c
@@ -1101,6 +1101,9 @@ if (mbox_file == NULL) {
"acl_smtp_mime: error while creating mbox spool file, message temporarily rejected.");
Uunlink(spool_name);
unspool_mbox();
+#ifdef EXPERIMENTAL_DCC
+ dcc_ok = 0;
+#endif
smtp_respond(US"451", 3, TRUE, US"temporary local problem");
message_id[0] = 0; /* Indicate no message accepted */
*smtp_reply_ptr = US""; /* Indicate reply already sent */
@@ -1180,6 +1183,9 @@ else if (rc != OK)
{
Uunlink(spool_name);
unspool_mbox();
+#ifdef EXPERIMENTAL_DCC
+ dcc_ok = 0;
+#endif
if (smtp_handle_acl_fail(ACL_WHERE_MIME, rc, user_msg, log_msg) != 0)
*smtp_yield_ptr = FALSE; /* No more messsages after dropped connection */
*smtp_reply_ptr = US""; /* Indicate reply already sent */
@@ -3092,6 +3098,9 @@ else
#ifdef WITH_CONTENT_SCAN
unspool_mbox();
#endif
+#ifdef EXPERIMENTAL_DCC
+ dcc_ok = 0;
+#endif
if (smtp_handle_acl_fail(ACL_WHERE_DATA, rc, user_msg, log_msg) != 0)
smtp_yield = FALSE; /* No more messsages after dropped connection */
smtp_reply = US""; /* Indicate reply already sent */
@@ -3131,6 +3140,9 @@ else
#ifdef WITH_CONTENT_SCAN
unspool_mbox();
#endif
+#ifdef EXPERIMENTAL_DCC
+ dcc_ok = 0;
+#endif
/* The ACL can specify where rejections are to be logged, possibly
nowhere. The default is main and reject logs. */