[Dovecot] Bug in zlib Plugin (2.0)
Alex Baule
alexwbaule at gmail.com
Thu May 6 17:35:54 EEST 2010
Hello everyone.....
I Made some tests in zlib plugin, and in ostream file (ostream-zlib.c) in
o_stream_zlib_sendv function, have it:
stream->ostream.offset += bytes;
In struct mail_save_context, have saved_physical_size and it can be updated,
acording with the observation.
/* if non-zero, overrides the physical size that should be saved.
for example when using zlib plugin, this would contain the mail's
uncompressed size. */
uoff_t saved_physical_size;
in file zlib-plugin.c in zlib_mail_save_compress_finish function, have it:
ctx->saved_physical_size = ctx->output->offset;
It's a update to offset (the size of email) in zlib, but if you update this
value with a new number, the W flag in email is NOT updated.
This is the original file, without update the or increase offset.
1273155226.M512158P16310.brc,S=435,W=390:2,S
This is the file updated with 5000b more.
1273155226.M512158P16310.brc,S=5435,W=390:2,S
The S is updated, but W not.
OK, this not matter in zlib plugin, because the physical size is the email
uncompressed, but if you use the zlib as example, and you use this value
(saved_physical_size) to update your saved email size, it can't update the W
flag, and the email will not be open, because the W size is wrong.
More information about the dovecot
mailing list