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;
 }