[Dovecot] Dovecot 64-bit and Pine error
Hi all,
I compiled a 64-bit Dovecot stable (13-03-2005) version on a Solaris 9 box with gcc 3.4.2. OpenSSL and libiconv are compiled 64-bit also. The configure I use:
export CPPFLAGS="-m64 -I/var/tmp/openssl/include"
export LDFLAGS="-m64 -L/var/tmp/openssl/lib"
./configure \
--prefix=/opt/dovecot \
--sysconfdir=/etc/opt/dovecot \
--disable-shared \
--with-libiconv-prefix=/var/tmp/iconv \
--without-passwd-file \
--without-shadow \
--without-vpopmail \
--without-static-userdb \
--with-ssl=openssl \
--with-ssldir=/etc/opt/dovecot/cert \
--without-pop3d
Dovecot is running fine, all email clients are running fine, except for Pine (4.62). When saving a mail to another IMAP mailbox, Pine report an error message and the logfile shows:
Mar 14 16:33:28 tbox dovecot: [ID 107833 local1.error] IMAP(tstud1):
utime(/var/tmp/var_mailstore/ t/tstud1/.Drafts/tmp/1110814408.P2681Q0M979308.tbox) failed: Value too large for defined data type
Compiling Dovecot in 32-bit, saving mail within Pine is doing just fine.
I guess this is caused by maildir-save.c, line 219. Is this a bug in Solaris or Dovecot?
-Remy
On 14.3.2005, at 22:16, Remy Zandwijk wrote:
Mar 14 16:33:28 tbox dovecot: [ID 107833 local1.error] IMAP(tstud1): utime(/var/tmp/var_mailstore/ t/tstud1/.Drafts/tmp/1110814408.P2681Q0M979308.tbox) failed: Value too large for defined data type
Compiling Dovecot in 32-bit, saving mail within Pine is doing just fine.
I guess this is caused by maildir-save.c, line 219. Is this a bug in Solaris or Dovecot?
Looks like it's a bug in utc_mktime() function which is based on code from Cyrus.. And looks like they've since figured out a way to fix it:
/* Some gmtime() implementations are broken and will return
* NULL for time_ts larger than 40 bits even on 64-bit platforms
* so we'll just cap it at 40 bits */
if(bits > 40) bits = 40;
I'll implement a similar fix. If you change TIME_T_MAX_BITS in config.h to 40 it should work?
Looks like it's a bug in utc_mktime() function which is based on code from Cyrus.. And looks like they've since figured out a way to fix it:
/* Some gmtime() implementations are broken and will return
* NULL for time_ts larger than 40 bits even on 64-bit platforms
* so we'll just cap it at 40 bits */
if(bits > 40) bits = 40;
I'll implement a similar fix. If you change TIME_T_MAX_BITS in config.h to 40 it should work?
I downloaded and compiled dovecot-1.0-stable 15-03-2005 and the fix works :-)
Thanks Timo!
Remy
participants (2)
-
Remy Zandwijk
-
Timo Sirainen