Off by one bug in imap_proxy.c:find_free_server()

Jukka Huhta jukka.huhta at
Fri May 21 06:06:57 EDT 2010

After wondering why the IMAP CREATE command didn't get proxied to the
right backend server with most free space in spool even though
serverlist was specified, we isolated a bug from imap_proxy.c's
find_free_server() code with my colleague:

The first digit of the freespace annotation value gets eaten up when
parsing the response.  As a result, the comparison of these values
gives results in something completely different than what was

I filed a bug, #3225.  Can someone confirm and fix this, please?

BTW, two side notes unrelated to this:

1. If you've ever tried to create new mailboxes by connecting to a
frontend but ended up having them created on the very same frontend
with even no real spool dir, you might have an erroneous proxyservers
option defined in your frontend's imapd.conf.  Take it away. :-)

2. On a clustered environment where spools are mounted only on certain
nodes running the respective Cyrus instance, calling cyr_df makes
no sense.  It is only a wrapper of some kind to df and can be
called locally where the spool is mounted.

Running Cyrus 2.3.16 (Invoca RPM) on a CentOS 5.4 cluster,
mupdate_config: standard.

Jukka Huhta
University of Helsinki

More information about the Info-cyrus mailing list