sieve addflag/setflag for \seen flag doesn't work with keep/implicit keep
Ken Murchison
murch at andrew.cmu.edu
Fri Feb 29 16:22:26 EST 2008
I plan on looking into this on Monday. I need to look at this code
anyways to make fileinto work across backends.
Rob Mueller wrote:
> The whole mailbox/append code leaves me a bit lost, but I've tracked
> down the general area of the problem, Ken maybe you can work out what
> the right fix is, I don't think it's hard.
>
> sieve_fileinto() does the following:
>
> 1. cast void * sc -> script_data_t *sd
> 2. pass "sd->username" as the "authuser" param to deliver_mailbox()
> 3. deliver_mailbox() calls append_setup() with "authuser" as the
> "userid" param
> 4. append_setup() copys the "userid" parameter into the
> "appendstate.userid" struct area
> 5. during append_commit() "appendstate.userid" is used as the username
> to add the seen flag to
>
> That all works fine.
>
> However, sieve_keep() does the following:
>
> 1. cast void *mc -> deliver_data_t *mydata
> 2. pass "mydata" as the "mydata" param to deliver_local()
> 3. deliver_local() calls deliver_mailbox(), with "mydata->authuser" as
> the "userid" param
>
> The value in mydata->authuser is not the username, in fact they're empty:
>
> (gdb) p *mydata
> $29 = { ..., authuser = 0x0, authstate = 0x0}
>
> This means the seen flag never gets stored correctly if you're using
> keep or the implicit keep, you have to use fileinto.
>
> I'm not sure of the best way of fixing this. I can see the obvious
> solution (in sieve_keep, cast void * sc -> script_data_t *sd, and copy
> authuser and authstate sd to mydata), but that doesn't feel right to me.
>
> Ken, do you know what the right solution is here?
>
> Rob
>
>
--
Kenneth Murchison
Systems Programmer
Project Cyrus Developer/Maintainer
Carnegie Mellon University
More information about the Cyrus-devel
mailing list