Here are a few more patches. Still keeping it easy for now. Again
the basis for these patches is dovecot-1.1.7.
Patch #6. Solve a cross-compilation endianness issue. Currently,
Dovecot assumes that the endianness of the build system is the same as
the endianness of the runtime system. This is not necessarily true.
We ran into this while compiling for i386 on a ppc machine. The patch
switches to using gcc's __BIG_ENDIAN__ macro; see the comment in the
patch to configure.in. It also removes the related and unused
MAIL_INDEX_COMPAT_FLAGS parameter. This patch may be applicable to
other build environments with a little tweaking.
Patch #7. Replace all occurrences of "hash_create" and "hash_destroy"
with "hash_table_create" and "hash_table_destroy" respectively. The
symbols hash_create and hash_destroy conflict with symbols defined in
<strhash.h> and libc. This showed up when loading dovecot's quota
plugin (one of our future patches will add a hash table to it; stay
tuned). The wrong hash_create was called which caused a crash at the
first hash_insert. Apparently this is only a problem in loaded
dynamic libraries and not linked-in ones.
Patch #8. Back off after auth failures to deter abusers. Stalls 5
seconds per failed attempt.
PS -- Please forgive me if I make a mistake at some point while
splitting these patches out from our source tree. They're all mingled
together on my end and it's sometimes tricky to extract just the right
changes for each patch. If anything seems fishy just let me know and
I'll take another look. Thanks.