local mailbox %s wrong in mailbox list in cyrus 2.3.15
Bron Gondwana
brong at fastmail.fm
Sat Mar 27 20:11:47 EDT 2010
On Sat, Mar 27, 2010 at 05:45:13PM -0500, Dan White wrote:
> On 28/03/10 11:29 +1300, karen turner wrote:
> >Has anyone else had this message in their cyrus logs?
> >
> >Mar 23 14:56:41 zysv01 mupdate[19515]: local mailbox user.zykdt0 wrong in
> >mailbox list
> >
> >I have identified the section of code that does it. It's the master mupdate
> >server synchronization. It is checking for a ! on a local mailbox line of the
> >murder database.
> >
> >What is the purpose of it checking for a ! on a local mail box line?
> >A ! is used as a separator, when specifying a remote server, when its a remote
> >mailbox.
>
> I have not seen that error, but a ! in the local mailbox list (ctl_mboxlist
> -d) denotes the existence of a virtual domain, e.g.:
>
> example.org!user.kerri
That's what I call a dumb design decision :( Using the same separator for
two different purposes in two different contexts. There's too much of this
in all sorts of places in Cyrus - from using the same variable name as both
a struct and a pointer to said struct through to "clever" stuff like this:
unsigned newseen = 0, newnext = 0;
...
newseen = (*new == ':');
...
newnext += newseen;
When what they mean is:
if (newseen) newnext++;
It's just ugly type coercion. Yes a boolean result is "1" if true, but ouch.
There's also lots of using the same temporary variable or even the same array
in two different context without a lot of clarity about when/where it has each
meaning.
Like this gem in index_search:
for (i = 0; i < n; i++) {
msgno_list[i] = UID(msgno_list[i]);
}
I can see why, it save a little bit of re-allocating memory for two different
meanings of lists. But icky variable meaning reuse.
Bron ( rewriting that section of code anyway, but just understanding why was
not a pleasant experience! )
More information about the Info-cyrus
mailing list