Sieve \\Seen flag actions not replicated

John Capo jc at irbs.com
Tue Jan 2 19:19:16 EST 2007


Quoting Ken Murchison (murch at andrew.cmu.edu):
> John Capo wrote:
> >Tiring of running fixup scripts to keep seen state consistent, I
> >decided to find the problem.  In imap/lmtpd.c:
> >
> >            sync_log_append(mailboxname); 
> >+        
> >+            if (nflags && user && !strncmp("user.", mailboxname, 5) && 
> >!strncmp(mailboxname + 5, user, strlen(user)))
> >+                sync_log_seen(user, mailboxname);
> >        }
> >
> >The strncmps insure that the seen state is updated only for the
> >user that owns the mailbox.  Are they neeed?
> 
> No, since you can set \Seen on shared mailboxes.  I haven't tested it, 
> but I think this does the right thing.  Please let me know.

This patch works just fine.  Tested with combinations of system
flags and user flags.


> 
> --- lmtpd.c.~1.145.~	2006-12-19 14:33:09.000000000 -0500
> +++ lmtpd.c	2007-01-02 12:39:59.000000000 -0500
> @@ -514,6 +514,16 @@
>  	    syslog(LOG_INFO, "Delivered: %s to mailbox: %s", id, 
>  	    mailboxname);
> 
>  	    sync_log_append(mailboxname);
> +
> +	    if (user) {
> +		/* check if the \Seen flag has been set on this message */
> +		while (nflags) {
> +		    if (!strcmp(flag[--nflags], "\\seen")) {
> +			sync_log_seen(user, mailboxname);
> +			break;
> +		    }
> +		}
> +	    }
>  	}
>      }
> 
> 
> 
> -- 
> Kenneth Murchison
> Systems Programmer
> Project Cyrus Developer/Maintainer
> Carnegie Mellon University


More information about the Cyrus-devel mailing list