The unified diff between revisions [40ea6296..] and [4b23f812..] is displayed below. It can also be downloaded as a raw diff.
#
#
# patch "src/local/command.c"
# from [d14752dc4fa7acb9345fad2b0efb722bcc203e41]
# to [608efb8182c00019fba87d6ad790bbb10dcdcff7]
#
# patch "src/local/local.h"
# from [336f29347d385933dd1c8d90d26f5fe186310b71]
# to [72f4d7e815c81b3581aa3ef2fa5c2cff4bf6d014]
#
# patch "src/local/ucc_hack.c"
# from [26c2f16e3a2e29b825f7a786f87b01291c9a2114]
# to [df728a6e1b380ae0b438867b67f196e73a252cee]
#
============================================================
--- src/local/command.c d14752dc4fa7acb9345fad2b0efb722bcc203e41
+++ src/local/command.c 608efb8182c00019fba87d6ad790bbb10dcdcff7
@@ -79,7 +79,8 @@
/* deliver_command - deliver to shell command */
-int deliver_command(LOCAL_STATE state, USER_ATTR usr_attr, const char *command)
+int ucc_deliver_command(LOCAL_STATE state, USER_ATTR usr_attr, const char *command,
+ int dup_check)
{
char *myname = "deliver_command";
VSTRING *why;
@@ -103,7 +104,7 @@ int deliver_command(LOCAL_STATE stat
*
* Skip this command if it was already delivered to as this user.
*/
- if (been_here(state.dup_filter, "command %ld %s", (long) usr_attr.uid, command))
+ if (dup_check && been_here(state.dup_filter, "command %ld %s", (long) usr_attr.uid, command))
return (0);
/*
@@ -221,3 +222,8 @@ int deliver_command(LOCAL_STATE stat
return (deliver_status);
}
+
+int deliver_command(LOCAL_STATE state, USER_ATTR usr_attr, const char *command)
+{
+ return ucc_deliver_command(state, usr_attr, command, 1);
+}
============================================================
--- src/local/local.h 336f29347d385933dd1c8d90d26f5fe186310b71
+++ src/local/local.h 72f4d7e815c81b3581aa3ef2fa5c2cff4bf6d014
@@ -167,6 +167,7 @@ extern int deliver_command(LOCAL_STATE,
*/
extern int deliver_mailbox(LOCAL_STATE, USER_ATTR, int *);
extern int deliver_command(LOCAL_STATE, USER_ATTR, const char *);
+extern int ucc_deliver_command(LOCAL_STATE, USER_ATTR, const char *, int dup_check);
extern int deliver_file(LOCAL_STATE, USER_ATTR, char *);
extern int deliver_indirect(LOCAL_STATE);
extern int deliver_maildir(LOCAL_STATE, USER_ATTR, char *);
============================================================
--- src/local/ucc_hack.c 26c2f16e3a2e29b825f7a786f87b01291c9a2114
+++ src/local/ucc_hack.c df728a6e1b380ae0b438867b67f196e73a252cee
@@ -79,7 +79,7 @@ int ucc_deliver_no_relay(LOCAL_STATE sta
USER_ATTR usr_attr;
const char* myname = "ucc_deliver_no_relay";
- if (been_here(state.dup_filter, "ucc_no_relay %s", state.msg_attr.local))
+ if (been_here(state.dup_filter, "ucc_no_relay u %s r %s", state.msg_attr.local, state.msg_attr.recipient))
return 0;
msg_info("UCC no_relay hack in effect. user '%s', localpart '%s', recip '%s'",
@@ -100,7 +100,7 @@ int ucc_deliver_no_relay(LOCAL_STATE sta
}
SET_USER_ATTR(usr_attr, mbox_pwd, state.level);
- status = deliver_command(state, usr_attr, var_ucc_no_relay_cmd);
+ status = ucc_deliver_command(state, usr_attr, var_ucc_no_relay_cmd, 0);
mypwfree(mbox_pwd);
return status;
}