Mercurial > dovecot > core-2.2
changeset 15608:f06419a40a06
Merged changes from v2.1 tree.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 09 Jan 2013 05:38:13 +0200 |
parents | 2ae4a40b3b24 (current diff) df06c834d7e8 (diff) |
children | 7bbc5c50c309 |
files | .hgsigs .hgtags NEWS configure.ac src/lib-storage/index/dbox-common/dbox-file.c src/lib-storage/index/dbox-multi/mdbox-save.c src/lib-storage/index/index-mail.c src/lib/buffer.c src/lib/net.c |
diffstat | 8 files changed, 41 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgsigs Tue Jan 08 16:24:20 2013 +0200 +++ b/.hgsigs Wed Jan 09 05:38:13 2013 +0200 @@ -54,3 +54,4 @@ 741d800a192fa23572bb14196df2a8917cf20614 0 iEYEABECAAYFAlC3A5EACgkQyUhSUUBVisnmlACcCm6jc7NRoTkBtrJLcz+P325U1xcAn2+0eghqEMiP+rzRJC55oQxV00Zy 75bfda4a7c6c9aa04b6a6ef233fc527356171a06 0 iEYEABECAAYFAlC4WKwACgkQyUhSUUBViskaOACgmcwWV8hgsCOWvkbdh0OIw1ImSQYAn1RcTL0CG3M8+XG7QrrxSfQ7+V99 86bccdf46d172524ca19a1a8a16a50ac30a6743c 0 iEYEABECAAYFAlDqonoACgkQyUhSUUBVisnqqACfaqdR6GxUAJznotKT9WHIUVhVgcIAoJIEa0SBzlGIWThmLvtQByF9vXcc +cf9d62fd0b143efa8e49fac998eb78a648cdd8a9 0 iEYEABECAAYFAlDqjXUACgkQyUhSUUBViskUEwCfYTWHeDmPr8HfxSBQN17SD5IwDygAnROhb3IVTm9niDun4gxPxbHLo/Pe
--- a/.hgtags Tue Jan 08 16:24:20 2013 +0200 +++ b/.hgtags Wed Jan 09 05:38:13 2013 +0200 @@ -90,4 +90,5 @@ f5941f3ac7622361634b6cba464da79cc883d1bb 2.2.alpha1 741d800a192fa23572bb14196df2a8917cf20614 2.1.11 75bfda4a7c6c9aa04b6a6ef233fc527356171a06 2.1.12 +cf9d62fd0b143efa8e49fac998eb78a648cdd8a9 2.1.13 86bccdf46d172524ca19a1a8a16a50ac30a6743c 2.2.beta1
--- a/NEWS Tue Jan 08 16:24:20 2013 +0200 +++ b/NEWS Wed Jan 09 05:38:13 2013 +0200 @@ -30,6 +30,13 @@ + LMTP proxy: Implemented XCLIENT extension for passing remote IP address through proxy. +v2.1.13 2013-01-06 Timo Sirainen <tss@iki.fi> + + - Some fixes to cache file changes in v2.1.11. + - fts-solr: Overlong UTF8 sequences in mails were rejected by Solr and + caused the mails to not be indexed. + - virtual storage: Sorting mailbox by from/to/cc/bcc didn't work. + v2.1.12 2012-11-30 Timo Sirainen <tss@iki.fi> - dovecot-config in v2.1.11 caused build problems with Pigeonhole
--- a/src/lib-storage/index/dbox-common/dbox-file.c Tue Jan 08 16:24:20 2013 +0200 +++ b/src/lib-storage/index/dbox-common/dbox-file.c Wed Jan 09 05:38:13 2013 +0200 @@ -469,6 +469,7 @@ ctx->file = file; if (file->fd != -1) { ctx->output = o_stream_create_fd_file(file->fd, 0, FALSE); + o_stream_set_name(ctx->output, file->cur_path); o_stream_cork(ctx->output); } return ctx;
--- a/src/lib-storage/index/dbox-multi/mdbox-save.c Tue Jan 08 16:24:20 2013 +0200 +++ b/src/lib-storage/index/dbox-multi/mdbox-save.c Wed Jan 09 05:38:13 2013 +0200 @@ -411,14 +411,14 @@ struct dbox_save_mail *save_mail; struct mdbox_mailbox *src_mbox; struct mdbox_mail_index_record rec; - const void *data; + const void *guid_data; + guid_128_t wanted_guid; bool expunged; ctx->ctx.finished = TRUE; if (mail->box->storage != _ctx->transaction->box->storage || - _ctx->transaction->box->disable_reflink_copy_to || - _ctx->data.guid != NULL) + _ctx->transaction->box->disable_reflink_copy_to) return mail_storage_copy(_ctx, mail); src_mbox = (struct mdbox_mailbox *)mail->box; @@ -428,6 +428,20 @@ &rec.map_uid) < 0) return -1; + mail_index_lookup_ext(mail->transaction->view, mail->seq, + src_mbox->guid_ext_id, &guid_data, &expunged); + if (guid_data == NULL || guid_128_is_empty(guid_data)) { + /* missing GUID, something's broken. don't copy using + refcounting. */ + return mail_storage_copy(_ctx, mail); + } else if (_ctx->data.guid != NULL && + (guid_128_from_string(_ctx->data.guid, wanted_guid) < 0 || + memcmp(guid_data, wanted_guid, sizeof(wanted_guid)) != 0)) { + /* GUID change requested. we can't do it with refcount + copying */ + return mail_storage_copy(_ctx, mail); + } + /* remember the map_uid so we can later increase its refcount */ if (!array_is_created(&ctx->copy_map_uids)) i_array_init(&ctx->copy_map_uids, 32); @@ -438,12 +452,8 @@ mail_index_update_ext(ctx->ctx.trans, ctx->ctx.seq, ctx->mbox->ext_id, &rec, NULL); - mail_index_lookup_ext(mail->transaction->view, mail->seq, - src_mbox->guid_ext_id, &data, &expunged); - if (data != NULL) { - mail_index_update_ext(ctx->ctx.trans, ctx->ctx.seq, - ctx->mbox->guid_ext_id, data, NULL); - } + mail_index_update_ext(ctx->ctx.trans, ctx->ctx.seq, + ctx->mbox->guid_ext_id, guid_data, NULL); index_copy_cache_fields(_ctx, mail, ctx->ctx.seq); save_mail = array_append_space(&ctx->mails);
--- a/src/lib-storage/index/index-mail.c Tue Jan 08 16:24:20 2013 +0200 +++ b/src/lib-storage/index/index-mail.c Wed Jan 09 05:38:13 2013 +0200 @@ -1459,8 +1459,13 @@ { struct index_mail *mail = (struct index_mail *)_mail; - if (mail->data.seq == seq) - return; + if (mail->data.seq == seq) { + if (!saving) + return; + /* we started saving a mail, aborted it, and now we're saving + another mail with the same sequence. make sure the mail + gets reset. */ + } mail->mail.v.close(&mail->mail.mail);
--- a/src/lib/buffer.c Tue Jan 08 16:24:20 2013 +0200 +++ b/src/lib/buffer.c Wed Jan 09 05:38:13 2013 +0200 @@ -325,7 +325,7 @@ const struct real_buffer *buf = (const struct real_buffer *)_buf; void *ret; - if (buf->pool->datastack_pool) { + if (buf->pool != NULL && buf->pool->datastack_pool && buf->alloc > 0) { /* this doesn't really do anything except verify the stack frame */ ret = p_realloc(buf->pool, buf->w_buffer,
--- a/src/lib/net.c Tue Jan 08 16:24:20 2013 +0200 +++ b/src/lib/net.c Wed Jan 09 05:38:13 2013 +0200 @@ -279,7 +279,11 @@ sa.un.sun_family = AF_UNIX; if (i_strocpy(sa.un.sun_path, path, sizeof(sa.un.sun_path)) < 0) { /* too long path */ +#ifdef ENAMETOOLONG + errno = ENAMETOOLONG; +#else errno = EINVAL; +#endif return -1; }