The MUPDATE protocol has no facility to pass mailbox uniqueids back and forth. It only deals with mailbox names, locations, and ACLs.


On 08/11/2017 11:08 AM, Stephan Lauffer wrote:
Hi

Zitat von StHelloephan Lauffer <lauf...@ph-freiburg.de>:

Hello!

In our test environment we have two 3.0.2 backends and a 3.0.2 mupdate/frontend server.

The one and only mailbox is user.test, We can xfer this mbox between the backends, so far so good.

If we ask the frontend about the mailbox the imapd session crashes. A simple "lm" is ok.

May we have a bug in our configs which may cause this..?

---------- cyrus Thu Aug 10 16:32:57 2017

<1502375577<4 RLIST "" ""
1502375577>* LIST (\Noselect) "." ""
4 OK Completed (0.000 secs)
<1502375581<5 GETANNOTATION user.test "*" ("value.priv" "value.shared")
1502375581>* BYE Fatal error: Internal error: assertion failed: imap/annotate.c: 1680: state->mailbox

In imap/mboxlist.c mboxlist_parse_entry() we except to get the uniqueid if we found a extended mboxlist entry.

Indeed the entry is extended on the mupdate servers mboxlist and on the backend server. But the mupdate server has no uniqueid.

I guess this is the problem here. state->mailbox fails in annotate.c before we test if uniqueid is set there:

Line 1680 in annotate.c...:

    assert(state->mailbox);

    if (state->mailbox->uniqueid)
        buf_appendcstr(&value, state->mailbox->uniqueid);

Btw: Is there a good reason not to store die ID in the mailboxes.db.

output of strings on the backend...:
# strings /var/lib/imap/mailboxes.db
twoskip file
6user.test%(A %(test lrswipkxtecdan) I 02tws5d0y4ecnp9rhgy66p5m P 00 V 1502362835 F 1 M 1502374944)

output of strings on the mupdate server:
strings /var/lib/imap/mailboxes.db
twoskip file
user.test%(A %(test lrswipkxtecdan) P 00 S mailsg-hx T r M 1502449874)




--
Kenneth Murchison
Cyrus Development Team
FastMail Pty Ltd

Reply via email to