git://git.exim.org
/
users
/
jgh
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ACL: control = queue/first_pass_route
[users/jgh/exim.git]
/
src
/
src
/
acl.c
diff --git
a/src/src/acl.c
b/src/src/acl.c
index 938bea7d9eb13baf55f1928bf09e10d50e36a018..952195d4a294bb125045b854668502fde5fc4f8e 100644
(file)
--- a/
src/src/acl.c
+++ b/
src/src/acl.c
@@
-366,6
+366,7
@@
enum {
CONTROL_NO_MULTILINE,
CONTROL_NO_PIPELINING,
CONTROL_NO_MULTILINE,
CONTROL_NO_PIPELINING,
+ CONTROL_QUEUE,
CONTROL_QUEUE_ONLY,
CONTROL_SUBMISSION,
CONTROL_SUPPRESS_LOCAL_FIXUPS,
CONTROL_QUEUE_ONLY,
CONTROL_SUBMISSION,
CONTROL_SUPPRESS_LOCAL_FIXUPS,
@@
-502,8
+503,16
@@
static control_def controls_list[] = {
ACL_BIT_NOTSMTP | ACL_BIT_NOTSMTP_START
},
ACL_BIT_NOTSMTP | ACL_BIT_NOTSMTP_START
},
+[CONTROL_QUEUE] =
+ { US"queue", TRUE,
+ (unsigned)
+ ~(ACL_BIT_MAIL | ACL_BIT_RCPT |
+ ACL_BIT_PREDATA | ACL_BIT_DATA |
+ // ACL_BIT_PRDR| /* Not allow one user to freeze for all */
+ ACL_BIT_NOTSMTP | ACL_BIT_MIME)
+ },
[CONTROL_QUEUE_ONLY] =
[CONTROL_QUEUE_ONLY] =
- { US"queue_only",
FALS
E,
+ { US"queue_only",
TRU
E,
(unsigned)
~(ACL_BIT_MAIL | ACL_BIT_RCPT |
ACL_BIT_PREDATA | ACL_BIT_DATA |
(unsigned)
~(ACL_BIT_MAIL | ACL_BIT_RCPT |
ACL_BIT_PREDATA | ACL_BIT_DATA |
@@
-3158,9
+3167,16
@@
for (; cb; cb = cb->next)
cancel_cutthrough_connection(TRUE, US"item frozen");
break;
cancel_cutthrough_connection(TRUE, US"item frozen");
break;
+ case CONTROL_QUEUE:
case CONTROL_QUEUE_ONLY:
f.queue_only_policy = TRUE;
cancel_cutthrough_connection(TRUE, US"queueing forced");
case CONTROL_QUEUE_ONLY:
f.queue_only_policy = TRUE;
cancel_cutthrough_connection(TRUE, US"queueing forced");
+ while (*p == '/')
+ if (Ustrncmp(p, "/first_pass_route", 17) == 0)
+ {
+ p += 17;
+ f.queue_smtp = TRUE;
+ }
break;
case CONTROL_SUBMISSION:
break;
case CONTROL_SUBMISSION: