History log of /dovecot/src/lib-storage/list/mailbox-list-index.h
Revision Date Author Comments Expand
43ce61b1d755832186f12b9739d18212b4744d14 24-Jan-2018 Aki Tuomi <aki.tuomi@dovecot.fi>

lib-storage: Add and use INDEX_LIST_CONTEXT_REQUIRE Satisfies static analyzers

65492363f4a0114c0706ee3fd212e429515f5a73 14-Dec-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: mailbox_list_index - List prefix/INBOX if it necessary

f5447068410d91377dad69e5393553015032ef6f 13-Dec-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

LAYOUT=index: Fix updating STATUS changes in mailbox list index Mailbox list index backend code was overriding sync_init and sync_deinit methods, which STATUS handling had already already overridden. They both used the same super struct, so STATUS's sync_* were never called.

b42817ce16a8660cbcc4adfc8bccc3db1c6d00c7 05-Dec-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: Rebuild list index when doing doveadm force-resync

8049d5792631981b50b0ad226a03298445e305c7 05-Dec-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

LAYOUT=index: Rebuild list index if INBOX is missing on inbox=yes namespace This avoids having to manually rebuild the list index afterwards if it becomes lost.

8528048c7b82c745bcfa5a6b1394251b3aaeb129 15-Nov-2017 Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>

lib-storage: Fix MAILBOX_LIST_INDEX_HIERARHCY_SEP spelling Original work by @jsoref

f8a67af9b7bde79c186e6b82ea200d7fcf85571b 30-May-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: Fix mailbox_list_index=yes + ACLs + auto=subscribe mailboxes If the auto=subscribe mailbox didn't have a lookup ACL, it shouldn't have been listed. This didn't work properly, because ACL plugin initialized the autocreate_ctx only for the index iterator, while the autoboxes were listed using the backend iterator. Fixed by not creating index iterator at all when doing a passthrough iteration.

58a89627905e3590381cdd5eb931b9537c4b4ea6 19-May-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: Implement mailbox_list_notify_flush() This flushes any pending notifications. For now it only checks if there's a pending notification waiting for a timeout. It could also stat() the files to make sure, but that's probably unnecessary.

a18b40c2ce1cb4f2b087a9ee54af188a25431dba 19-May-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: Fix mailbox list index records without guid having invalid flags With LAYOUT=index the mailbox is found with its GUID. If it doesn't exist, the mailbox has to be either \NonExistent or \NoSelect. It probably doesn't make much difference which one, so we'll fix them by adding \NoSelect. With other layouts the GUID is allowed to be empty, because it can be looked up from the actual mailbox.

58289301ce9f6aa7121891e33ef7e0a1b4559e8d 14-Feb-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: Fix mailbox list index hook usage The previous method appeared to work, but not if the internal hooks were used more than once.

0e9dc599a312e1bd55ce2cb256535914a8295344 13-Feb-2017 Timo Sirainen <timo.sirainen@dovecot.fi>

LAYOUT=index: Rename mailbox_list_index_node.corrupted_parent to corrupted_ext The code will be useful for other purposes also besides updating corrupted parents.

2ac5f36aa7c2e7a07ba8815d43a6d7483f62e74c 16-Dec-2016 Timo Sirainen <timo.sirainen@dovecot.fi>

global: Change string position/length from unsigned int to size_t Mainly to avoid truncating >4GB strings, which might potentially cause some security holes. Normally there are other limits, which prevent such excessive strings from being created in the first place. I'm sure this didn't find everything. Maybe everything could be found with compiler warnings. -Wconversion kind of does it, but it gives way too many unnecessary warnings. These were mainly found with: grep " = strlen" egrep "unsigned int.*(size|len)"

/dovecot/src/auth/auth-cache.c /dovecot/src/auth/auth-request.c /dovecot/src/auth/auth-request.h /dovecot/src/auth/db-checkpassword.c /dovecot/src/auth/db-ldap.c /dovecot/src/auth/mech-gssapi.c /dovecot/src/auth/mech-scram-sha1.c /dovecot/src/auth/password-scheme.c /dovecot/src/auth/userdb-dict.c /dovecot/src/config/config-parser-private.h /dovecot/src/config/config-parser.c /dovecot/src/config/config-request.c /dovecot/src/config/doveconf.c /dovecot/src/config/old-set-parser.c /dovecot/src/director/director-connection.c /dovecot/src/doveadm/doveadm-auth-server.c /dovecot/src/doveadm/doveadm-auth.c /dovecot/src/doveadm/doveadm-cmd.c /dovecot/src/doveadm/doveadm-fs.c /dovecot/src/doveadm/doveadm-log.c /dovecot/src/doveadm/doveadm-mail-mailbox.c /dovecot/src/doveadm/doveadm-mail.c /dovecot/src/doveadm/doveadm-print-table.c /dovecot/src/doveadm/doveadm-sis.c /dovecot/src/doveadm/doveadm-util.c /dovecot/src/doveadm/doveadm.c /dovecot/src/doveadm/dsync/dsync-brain-mailbox-tree.c /dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c /dovecot/src/doveadm/dsync/dsync-mailbox-tree.c /dovecot/src/imap/cmd-list.c /dovecot/src/imap/cmd-notify.c /dovecot/src/imap/cmd-rename.c /dovecot/src/imap/cmd-subscribe.c /dovecot/src/imap/imap-list.c /dovecot/src/imap/imap-notify.c /dovecot/src/imap/imap-status.c /dovecot/src/imap/main.c /dovecot/src/ipc/main.c /dovecot/src/lib-compression/compression.c /dovecot/src/lib-compression/ostream-bzlib.c /dovecot/src/lib-compression/ostream-lzma.c /dovecot/src/lib-compression/ostream-zlib.c /dovecot/src/lib-dict/dict-db.c /dovecot/src/lib-dict/dict-file.c /dovecot/src/lib-dict/dict-memcached.c /dovecot/src/lib-dict/dict-sql-settings.c /dovecot/src/lib-dict/dict-sql.c /dovecot/src/lib-fs/fs-dict.c /dovecot/src/lib-fs/fs-posix.c /dovecot/src/lib-fs/fs-test.c /dovecot/src/lib-fts/fts-filter-english-possessive.c /dovecot/src/lib-fts/fts-icu.c /dovecot/src/lib-fts/fts-tokenizer-address.c /dovecot/src/lib-fts/test-fts-tokenizer.c /dovecot/src/lib-http/http-client-request.c /dovecot/src/lib-imap-client/imapc-connection.c /dovecot/src/lib-imap/imap-match.c /dovecot/src/lib-imap/imap-parser.c /dovecot/src/lib-imap/imap-quote.c /dovecot/src/lib-imap/imap-utf7.c /dovecot/src/lib-lda/lmtp-client.c /dovecot/src/lib-mail/istream-binary-converter.c /dovecot/src/lib-mail/message-decoder.c /dovecot/src/lib-mail/message-header-decode.c /dovecot/src/lib-mail/test-istream-attachment.c /dovecot/src/lib-mail/test-istream-dot.c /dovecot/src/lib-mail/test-istream-header-filter.c /dovecot/src/lib-mail/test-istream-qp-decoder.c /dovecot/src/lib-mail/test-mbox-from.c /dovecot/src/lib-mail/test-message-header-parser.c /dovecot/src/lib-master/master-login.c /dovecot/src/lib-master/master-service.c /dovecot/src/lib-storage/index/cydir/cydir-save.c /dovecot/src/lib-storage/index/cydir/cydir-sync.h /dovecot/src/lib-storage/index/dbox-common/dbox-file-fix.c /dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c /dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c /dovecot/src/lib-storage/index/imapc/imapc-list.c /dovecot/src/lib-storage/index/imapc/imapc-search.c /dovecot/src/lib-storage/index/imapc/imapc-storage.c /dovecot/src/lib-storage/index/index-attribute.c /dovecot/src/lib-storage/index/index-mail-headers.c /dovecot/src/lib-storage/index/index-search.c /dovecot/src/lib-storage/index/index-sort.c /dovecot/src/lib-storage/index/maildir/maildir-filename-flags.c /dovecot/src/lib-storage/index/maildir/maildir-save.c /dovecot/src/lib-storage/index/maildir/maildir-uidlist.c /dovecot/src/lib-storage/index/mbox/mbox-storage.c /dovecot/src/lib-storage/index/shared/shared-list.c mailbox-list-delete.c mailbox-list-fs-iter.c mailbox-list-index-backend.c mailbox-list-index.h mailbox-list-iter.c mailbox-list-maildir-iter.c mailbox-list-maildir.c mailbox-list-notify-tree.c mailbox-list-subscriptions.c /dovecot/src/lib-storage/mail-namespace.c /dovecot/src/lib-storage/mail-storage-service.c /dovecot/src/lib-storage/mail-storage.c /dovecot/src/lib-storage/mail-user.c /dovecot/src/lib-storage/mailbox-list.c /dovecot/src/lib-storage/mailbox-tree.c /dovecot/src/lib-storage/mailbox-uidvalidity.c /dovecot/src/lib/array.c /dovecot/src/lib/env-util.c /dovecot/src/lib/failures.c /dovecot/src/lib/istream-base64-encoder.c /dovecot/src/lib/json-parser.c /dovecot/src/lib/module-dir.c /dovecot/src/lib/net.c /dovecot/src/lib/ostream-file.c /dovecot/src/lib/printf-format-fix.c /dovecot/src/lib/printf-format-fix.h /dovecot/src/lib/str-find.c /dovecot/src/lib/str-sanitize.c /dovecot/src/lib/str.c /dovecot/src/lib/strfuncs.c /dovecot/src/lib/test-printf-format-fix.c /dovecot/src/lib/unlink-old-files.c /dovecot/src/lib/var-expand.c /dovecot/src/lmtp/commands.c /dovecot/src/log/log-error-buffer.c /dovecot/src/login-common/client-common-auth.c /dovecot/src/login-common/client-common.c /dovecot/src/login-common/login-proxy-state.c /dovecot/src/master/master-settings.c /dovecot/src/master/service-process.c /dovecot/src/plugins/acl/acl-lookup-dict.c /dovecot/src/plugins/acl/acl-mailbox-list.c /dovecot/src/plugins/dict-ldap/dict-ldap.c /dovecot/src/plugins/fts-solr/fts-backend-solr-old.c /dovecot/src/plugins/fts-solr/fts-backend-solr.c /dovecot/src/plugins/fts-squat/squat-test.c /dovecot/src/plugins/fts/fts-api.c /dovecot/src/plugins/fts/fts-search-args.c /dovecot/src/plugins/imap-acl/imap-acl-plugin.c /dovecot/src/plugins/imap-stats/imap-stats-plugin.c /dovecot/src/plugins/mail-crypt/mail-crypt-pluginenv.c /dovecot/src/plugins/mail-crypt/mail-crypt-userenv.c /dovecot/src/plugins/quota/quota-dirsize.c /dovecot/src/replication/aggregator/replicator-connection.c
fa780a18c41881036af582f7a3473d6399e9d34d 16-Dec-2016 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: Make dovecot.list.index's filename configurable. This is useful when there are multiple namespaces pointing to the same mail root directory. For example mdbox with lazy-expunge: namespace { prefix = Expunged/ location = mdbox:~/mdbox:MAILBOXDIR=expunged:LISTINDEX=expunged.list.index .. }

22436f3cbb7a2c666519a7448cf2d4d20e48f352 25-Nov-2016 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storge: Call mail_storage.list_index_corrupted() when needed The callback is called whenever mailbox list index appears to be corrupted with LAYOUT=index. The storage is responsible for adding to the index any mailboxes that are missing.

de258127e1fbd581329f09382e8e7eb9c9da58c5 25-Nov-2016 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: Rename mailbox_list_index.corrupted to corrupted_names_or_parents Makes it clearer what exactly the flag means.

85cbe5d66e22bc1290a33902fa2638245450a2df 16-Nov-2016 Timo Sirainen <timo.sirainen@dovecot.fi>

LAYOUT=index: Don't write corrupted mailbox names to box-name header. This way when opening a mailbox the box-name header isn't overwritten by a corrupted name. Keep track of the corrupted names with MAILBOX_LIST_INDEX_FLAG_CORRUPTED_NAME flag in list index records. The flag isn't removed until the mailbox is renamed.

9130eda2eb97055030fd5bccebe43d8585d2bf0c 16-Nov-2016 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: Fix invalid parents in LAYOUT=index Previously it just kept complaining without fixing the errors.

b94bcc82e68712aadd0aa980acf486bfaf0e9cad 16-Nov-2016 Timo Sirainen <timo.sirainen@dovecot.fi>

lib-storage: If LAYOUT=index loses mailbox names, write the generated ones to index. Previously it just kept complaining and regenerating new names, without actually fixing up the situation.

0dffa25d211be541ee3c953b23566a1a990789df 06-Jun-2016 Timo Sirainen <timo.sirainen@dovecot.fi>

global: unsigned int:1 -> bool:1 perl -i -pe 's/unsigned int ([^,:;]+):1;/bool $1:1;/' **/*.[ch]

/dovecot/src/anvil/anvil-connection.c /dovecot/src/anvil/penalty.c /dovecot/src/auth/auth-client-connection.h /dovecot/src/auth/auth-master-connection.h /dovecot/src/auth/auth-penalty.c /dovecot/src/auth/auth-postfix-connection.c /dovecot/src/auth/auth-request-handler.c /dovecot/src/auth/auth-request.h /dovecot/src/auth/auth-worker-client.c /dovecot/src/auth/auth-worker-server.c /dovecot/src/auth/db-checkpassword.c /dovecot/src/auth/db-passwd-file.h /dovecot/src/auth/db-sql.h /dovecot/src/auth/mech-digest-md5.c /dovecot/src/auth/passdb-pam.c /dovecot/src/auth/userdb-passwd.c /dovecot/src/auth/userdb-sql.c /dovecot/src/auth/userdb-static.c /dovecot/src/config/config-connection.c /dovecot/src/config/config-parser-private.h /dovecot/src/config/doveconf.c /dovecot/src/dict/dict-connection.h /dovecot/src/director/director-connection.c /dovecot/src/director/director-host.h /dovecot/src/director/director.h /dovecot/src/director/doveadm-connection.c /dovecot/src/director/login-connection.c /dovecot/src/director/mail-host.h /dovecot/src/director/user-directory.h /dovecot/src/doveadm/client-connection.h /dovecot/src/doveadm/doveadm-dsync.c /dovecot/src/doveadm/doveadm-mail-index.c /dovecot/src/doveadm/doveadm-mail-mailbox-status.c /dovecot/src/doveadm/doveadm-mail.h /dovecot/src/doveadm/doveadm-print-flow.c /dovecot/src/doveadm/doveadm-print-pager.c /dovecot/src/doveadm/doveadm-print-tab.c /dovecot/src/doveadm/doveadm-print-table.c /dovecot/src/doveadm/doveadm-stats.c /dovecot/src/doveadm/dsync/dsync-brain-private.h /dovecot/src/doveadm/dsync/dsync-ibc-private.h /dovecot/src/doveadm/dsync/dsync-ibc-stream.c /dovecot/src/doveadm/dsync/dsync-mailbox-export.c /dovecot/src/doveadm/dsync/dsync-mailbox-import.c /dovecot/src/doveadm/dsync/dsync-mailbox-tree.h /dovecot/src/doveadm/server-connection.c /dovecot/src/imap-login/imap-login-client.h /dovecot/src/imap-urlauth/imap-urlauth-client.h /dovecot/src/imap-urlauth/imap-urlauth-login.c /dovecot/src/imap-urlauth/imap-urlauth-worker.c /dovecot/src/imap/cmd-append.c /dovecot/src/imap/cmd-idle.c /dovecot/src/imap/cmd-list.c /dovecot/src/imap/cmd-select.c /dovecot/src/imap/cmd-urlfetch.c /dovecot/src/imap/imap-client.h /dovecot/src/imap/imap-fetch-body.c /dovecot/src/imap/imap-fetch.h /dovecot/src/imap/imap-notify.h /dovecot/src/imap/imap-search.h /dovecot/src/imap/imap-sync.c /dovecot/src/indexer/indexer-client.c /dovecot/src/indexer/indexer-queue.h /dovecot/src/indexer/master-connection.c /dovecot/src/indexer/worker-connection.c /dovecot/src/ipc/ipc-connection.h /dovecot/src/lib-auth/auth-client-private.h /dovecot/src/lib-auth/auth-master.c /dovecot/src/lib-auth/auth-master.h /dovecot/src/lib-auth/auth-server-connection.h /dovecot/src/lib-compression/istream-bzlib.c /dovecot/src/lib-compression/istream-lz4.c /dovecot/src/lib-compression/istream-lzma.c /dovecot/src/lib-compression/istream-zlib.c /dovecot/src/lib-compression/ostream-bzlib.c /dovecot/src/lib-compression/ostream-lzma.c /dovecot/src/lib-compression/ostream-zlib.c /dovecot/src/lib-dict/dict-client.c /dovecot/src/lib-dict/dict-private.h /dovecot/src/lib-dict/dict-sql.c /dovecot/src/lib-fs/fs-api-private.h /dovecot/src/lib-http/http-client-private.h /dovecot/src/lib-http/http-header-parser.c /dovecot/src/lib-http/http-message-parser.h /dovecot/src/lib-http/http-request-parser.c /dovecot/src/lib-http/http-request.h /dovecot/src/lib-http/http-response.h /dovecot/src/lib-http/http-server-private.h /dovecot/src/lib-http/http-transfer-chunked.c /dovecot/src/lib-http/http-url.c /dovecot/src/lib-http/http-url.h /dovecot/src/lib-imap-client/imapc-connection.c /dovecot/src/lib-imap-storage/imap-metadata.c /dovecot/src/lib-imap-storage/imap-msgpart-url.c /dovecot/src/lib-imap-storage/imap-msgpart.c /dovecot/src/lib-imap-urlauth/imap-urlauth-connection.c /dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.c /dovecot/src/lib-imap-urlauth/imap-urlauth-fetch.h /dovecot/src/lib-imap-urlauth/imap-urlauth-private.h /dovecot/src/lib-imap/imap-arg.h /dovecot/src/lib-imap/imap-parser.c /dovecot/src/lib-imap/imap-url.c /dovecot/src/lib-imap/imap-url.h /dovecot/src/lib-index/mail-cache-private.h /dovecot/src/lib-index/mail-cache-transaction.c /dovecot/src/lib-index/mail-index-private.h /dovecot/src/lib-index/mail-index-strmap.c /dovecot/src/lib-index/mail-index-sync-private.h /dovecot/src/lib-index/mail-index-sync.c /dovecot/src/lib-index/mail-index-transaction-private.h /dovecot/src/lib-index/mail-index-view-private.h /dovecot/src/lib-index/mail-index-view-sync.c /dovecot/src/lib-index/mail-index.h /dovecot/src/lib-index/mail-transaction-log-private.h /dovecot/src/lib-index/mail-transaction-log-view-private.h /dovecot/src/lib-index/mail-transaction-log.h /dovecot/src/lib-lda/duplicate.c /dovecot/src/lib-lda/lmtp-client.c /dovecot/src/lib-mail/istream-binary-converter.c /dovecot/src/lib-mail/istream-dot.c /dovecot/src/lib-mail/istream-header-filter.c /dovecot/src/lib-mail/message-decoder.c /dovecot/src/lib-mail/message-header-decode.c /dovecot/src/lib-mail/message-header-parser.c /dovecot/src/lib-mail/message-header-parser.h /dovecot/src/lib-mail/message-parser.c /dovecot/src/lib-mail/message-search.c /dovecot/src/lib-master/ipc-server.c /dovecot/src/lib-master/master-instance.c /dovecot/src/lib-master/master-login-auth.c /dovecot/src/lib-master/master-login.c /dovecot/src/lib-master/master-login.h /dovecot/src/lib-master/master-service-private.h /dovecot/src/lib-master/master-service-settings-cache.c /dovecot/src/lib-master/master-service-settings.h /dovecot/src/lib-master/master-service.h /dovecot/src/lib-master/service-settings.h /dovecot/src/lib-sql/driver-cassandra.c /dovecot/src/lib-sql/driver-mysql.c /dovecot/src/lib-sql/driver-pgsql.c /dovecot/src/lib-sql/driver-sqlite.c /dovecot/src/lib-sql/sql-api-private.h /dovecot/src/lib-ssl-iostream/iostream-openssl.h /dovecot/src/lib-storage/index/cydir/cydir-save.c /dovecot/src/lib-storage/index/dbox-common/dbox-file.h /dovecot/src/lib-storage/index/dbox-common/dbox-save.h /dovecot/src/lib-storage/index/dbox-multi/mdbox-map-private.h /dovecot/src/lib-storage/index/dbox-multi/mdbox-map.c /dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c /dovecot/src/lib-storage/index/dbox-multi/mdbox-storage.h /dovecot/src/lib-storage/index/imapc/imapc-list.h /dovecot/src/lib-storage/index/imapc/imapc-save.c /dovecot/src/lib-storage/index/imapc/imapc-storage.h /dovecot/src/lib-storage/index/imapc/imapc-sync.h /dovecot/src/lib-storage/index/index-mail.h /dovecot/src/lib-storage/index/index-rebuild.h /dovecot/src/lib-storage/index/index-search-private.h /dovecot/src/lib-storage/index/index-search.c /dovecot/src/lib-storage/index/index-sort-string.c /dovecot/src/lib-storage/index/index-thread-finish.c /dovecot/src/lib-storage/index/index-thread-private.h /dovecot/src/lib-storage/index/index-thread.c /dovecot/src/lib-storage/index/istream-mail.c /dovecot/src/lib-storage/index/maildir/maildir-copy.c /dovecot/src/lib-storage/index/maildir/maildir-keywords.c /dovecot/src/lib-storage/index/maildir/maildir-save.c /dovecot/src/lib-storage/index/maildir/maildir-storage.h /dovecot/src/lib-storage/index/maildir/maildir-sync.c /dovecot/src/lib-storage/index/maildir/maildir-uidlist.c /dovecot/src/lib-storage/index/mbox/istream-raw-mbox.c /dovecot/src/lib-storage/index/mbox/mbox-save.c /dovecot/src/lib-storage/index/mbox/mbox-storage.h /dovecot/src/lib-storage/index/mbox/mbox-sync-private.h /dovecot/src/lib-storage/index/pop3c/pop3c-client.c /dovecot/src/lib-storage/index/pop3c/pop3c-storage.h /dovecot/src/lib-storage/index/raw/raw-storage.h mailbox-list-fs-iter.c mailbox-list-index-notify.c mailbox-list-index-sync.h mailbox-list-index.h mailbox-list-iter.c mailbox-list-none.c /dovecot/src/lib-storage/mail-namespace.h /dovecot/src/lib-storage/mail-search-register.c /dovecot/src/lib-storage/mail-search.h /dovecot/src/lib-storage/mail-storage-private.h /dovecot/src/lib-storage/mail-storage-service.c /dovecot/src/lib-storage/mail-storage-service.h /dovecot/src/lib-storage/mail-storage.h /dovecot/src/lib-storage/mail-user.h /dovecot/src/lib-storage/mailbox-list-private.h /dovecot/src/lib-storage/mailbox-search-result-private.h /dovecot/src/lib-storage/mailbox-tree.c /dovecot/src/lib/buffer.c /dovecot/src/lib/connection.h /dovecot/src/lib/file-dotlock.c /dovecot/src/lib/file-dotlock.h /dovecot/src/lib/ioloop-private.h /dovecot/src/lib/istream-crlf.c /dovecot/src/lib/istream-file-private.h /dovecot/src/lib/istream-jsonstr.c /dovecot/src/lib/istream-mmap.c /dovecot/src/lib/istream-private.h /dovecot/src/lib/istream-tee.c /dovecot/src/lib/istream.h /dovecot/src/lib/mempool.h /dovecot/src/lib/module-dir.h /dovecot/src/lib/ostream-file-private.h /dovecot/src/lib/ostream-private.h /dovecot/src/lib/ostream.h /dovecot/src/lmtp/client.h /dovecot/src/lmtp/lmtp-proxy.c /dovecot/src/log/log-connection.c /dovecot/src/login-common/client-common.h /dovecot/src/login-common/login-proxy.c /dovecot/src/login-common/ssl-proxy-openssl.c /dovecot/src/master/service-process.h /dovecot/src/master/service.h /dovecot/src/plugins/acl/acl-api-private.h /dovecot/src/plugins/acl/acl-api.h /dovecot/src/plugins/acl/acl-backend-vfile.h /dovecot/src/plugins/acl/acl-lookup-dict.c /dovecot/src/plugins/acl/acl-mailbox-list.c /dovecot/src/plugins/expire/expire-plugin.c /dovecot/src/plugins/fts-lucene/fts-backend-lucene.c /dovecot/src/plugins/fts-solr/fts-backend-solr.c /dovecot/src/plugins/fts-solr/solr-connection.c /dovecot/src/plugins/fts-squat/squat-trie-private.h /dovecot/src/plugins/fts-squat/squat-trie.c /dovecot/src/plugins/fts-squat/squat-uidlist.c /dovecot/src/plugins/fts/fts-api-private.h /dovecot/src/plugins/fts/fts-indexer.c /dovecot/src/plugins/fts/fts-storage.c /dovecot/src/plugins/fts/fts-storage.h /dovecot/src/plugins/lazy-expunge/lazy-expunge-plugin.c /dovecot/src/plugins/pop3-migration/pop3-migration-plugin.c /dovecot/src/plugins/quota/quota-fs.c /dovecot/src/plugins/quota/quota-maildir.c /dovecot/src/plugins/quota/quota-private.h /dovecot/src/plugins/quota/quota-storage.c /dovecot/src/plugins/virtual/virtual-mail.c /dovecot/src/plugins/virtual/virtual-storage.h /dovecot/src/plugins/virtual/virtual-sync.c /dovecot/src/pop3/pop3-client.h /dovecot/src/replication/replicator/dsync-client.c /dovecot/src/replication/replicator/notify-connection.c /dovecot/src/replication/replicator/replicator-brain.c /dovecot/src/replication/replicator/replicator-queue.h
1ae5d61ec366fdb2f3c5b150ca378d6141b0f4bd 27-Nov-2015 Timo Sirainen <tss@iki.fi>

Added mailbox { autoexpunge } setting. This can be used to automatically expunge mails from specified mailboxes after they're old enough. The expunges are done when the user is being deinitialized. mailbox_list_index=yes should be enabled to have the best performance with this setting. Example: namespace inbox { mailbox Spam { auto = create special_use = \Junk autoexpunge = 30d } }

e048e63fec8d21d4af0fd9d27dd3fe5dcedf18e6 10-Jul-2015 Timo Sirainen <tss@iki.fi>

lib-storage: If mailboxes' vsizes are used, keep them updated also in mailbox list index. This allows looking them up quickly without opening the actual mailbox indexes.

3cd3140707526e005053547f356421b2d9a5e673 14-Oct-2014 Timo Sirainen <tss@iki.fi>

Compiling fix for some systems.

f663bdd9d345a86e6a7924d83319bd04b2fcb600 07-Oct-2014 Timo Sirainen <tss@iki.fi>

lib-storage: Fixed some race condition crashes with LAYOUT=index

5b59856b8eb89a8450fe9c48c6e6e359fdd254d2 26-May-2014 Timo Sirainen <tss@iki.fi>

lib-storage: Avoid refreshing mailbox list index too often.

faad8eaec70636c88886a9a524da958a19cd558b 15-Apr-2014 Timo Sirainen <tss@iki.fi>

lib-storage: Avoid rebuilding the whole mailbox list index when one mailbox changes.

28099d04bbb9e668c84e24f4abe258facdc030ac 04-Mar-2014 Timo Sirainen <tss@iki.fi>

lib-storage: Fixed assert-crash in mailbox rename with layout=index

ca31fc1a8e48281c6882796fa7d4372acc2f97e5 11-Oct-2013 Timo Sirainen <tss@iki.fi>

LAYOUT=index: Fixed race condition during mailbox creation.

cf05592015b99607095f970bf914f5d069bf0666 13-Jun-2013 Timo Sirainen <tss@iki.fi>

mailbox_list_index=yes: Fixed list iteration when namespace and backend separators differed.

1da5113b93f5dd0543a155040daa7ae3f3718b8b 30-May-2013 Timo Sirainen <tss@iki.fi>

layout=index: Allow mailbox create/delete/rename during mailbox list iteration.

f6e11660a066713579b713dc6aa2004a3a803fab 20-Feb-2013 Timo Sirainen <tss@iki.fi>

mailbox_list_index: Delay allocating the index so mbox can override the index path.

3a2f2adf5679aa383a2cab09f739d59233cada95 19-Feb-2013 Timo Sirainen <tss@iki.fi>

lib-storage: Fixed mailbox_update() when using mailbox_list_index=yes

29543188462c9348f365ec29115d777ffe4769d3 26-Nov-2012 Timo Sirainen <tss@iki.fi>

lib-storage: Fixes to LAYOUT=index backend.

88cc3155c01bf5384685a475fc14f406da1bd619 29-Oct-2012 Timo Sirainen <tss@iki.fi>

lib-storage: Avoid assert-crashing when updating mailbox list index.

e0aff4c7e3336ec4b5edbcfc3a72e1e118603ee2 27-Sep-2012 Timo Sirainen <tss@iki.fi>

lib-storage: Added initial implementation for layout=index. The idea is that all of the mailbox names only exist in the mailbox list index. Storage directories use mailbox GUIDs. This avoids all kinds of race conditions with mailbox renames. mailbox_list_index=yes is required for this layout to work. There are probably still some race conditions within the indexing code itself. Also error recovery is missing.

a8fe899601735459641edae975c0fa08be8482e2 16-Sep-2012 Timo Sirainen <tss@iki.fi>

Removed all the "enum foo;" declarations. They didn't seem to be very standard. Old gcc versions warn about them and C++ code doesn't like them.

/dovecot/src/auth/passdb-cache.h /dovecot/src/config/config-request.h /dovecot/src/config/old-set-parser.h /dovecot/src/doveadm/doveadm-mail-index.c /dovecot/src/doveadm/doveadm-mail-iter.h /dovecot/src/doveadm/doveadm-mail.c /dovecot/src/doveadm/doveadm-mail.h /dovecot/src/doveadm/doveadm-mailbox-list-iter.h /dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c /dovecot/src/imap/cmd-list.c /dovecot/src/imap/cmd-notify.c /dovecot/src/imap/imap-notify.c /dovecot/src/lib-imap/imap-util.h /dovecot/src/lib-index/mail-index-modseq.h /dovecot/src/lib-lda/mail-deliver.h /dovecot/src/lib-storage/Makefile.am /dovecot/src/lib-storage/index/imapc/imapc-sync.h /dovecot/src/lib-storage/index/maildir/maildir-sync.h mailbox-list-delete.h mailbox-list-index.h mailbox-list-subscriptions.h /dovecot/src/lib-storage/mailbox-list-iter.h /dovecot/src/lib-storage/mailbox-list-private.h /dovecot/src/lib-storage/mailbox-list.h /dovecot/src/plugins/notify/notify-plugin.h /dovecot/src/plugins/quota/quota-count.c /dovecot/src/plugins/virtual/virtual-config.c
24acd68c82dc137b88bb3ba3258b9d1f7ebcb44d 04-Sep-2012 Timo Sirainen <tss@iki.fi>

NOTIFY: Implemented SubscriptionChange

a75d470c9223a75801418fcdda258885c36317e0 20-Aug-2012 Timo Sirainen <tss@iki.fi>

Reverted "support for non-pointers" part of the hash table API changes. Originally I wrote it using clang, which didn't give as many warnings as gcc did. I guess this way is safer anyway..

/dovecot/src/anvil/connect-limit.c /dovecot/src/auth/auth-request-handler.c /dovecot/src/auth/db-checkpassword.c /dovecot/src/auth/db-ldap.c /dovecot/src/auth/db-passwd-file.c /dovecot/src/director/director-test.c /dovecot/src/director/user-directory.c /dovecot/src/doveadm/doveadm-director.c /dovecot/src/doveadm/doveadm-kick.c /dovecot/src/doveadm/doveadm-log.c /dovecot/src/doveadm/doveadm-mail-server.c /dovecot/src/doveadm/doveadm-stats.c /dovecot/src/doveadm/doveadm-who.c /dovecot/src/doveadm/dsync/dsync-mailbox-export.c /dovecot/src/doveadm/dsync/dsync-mailbox-import.c /dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c /dovecot/src/doveadm/dsync/dsync-transaction-log-scan.h /dovecot/src/imap/imap-client.c /dovecot/src/lib-auth/auth-server-connection.c /dovecot/src/lib-auth/auth-server-connection.h /dovecot/src/lib-dict/dict-file.c /dovecot/src/lib-index/mail-cache-fields.c /dovecot/src/lib-index/mail-cache-private.h /dovecot/src/lib-index/mail-index-private.h /dovecot/src/lib-index/mail-index.c /dovecot/src/lib-lda/duplicate.c /dovecot/src/lib-master/master-auth.c /dovecot/src/lib-master/master-login-auth.c /dovecot/src/lib-settings/settings-parser.c /dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c /dovecot/src/lib-storage/index/index-thread-finish.c /dovecot/src/lib-storage/index/maildir/maildir-keywords.c mailbox-list-index-sync.c mailbox-list-index.c mailbox-list-index.h /dovecot/src/lib/child-wait.c /dovecot/src/lib/hash.c /dovecot/src/lib/hash.h /dovecot/src/log/log-connection.c /dovecot/src/login-common/ssl-proxy-openssl.c /dovecot/src/master/service-monitor.c /dovecot/src/master/service-process.c /dovecot/src/master/service.c /dovecot/src/master/service.h /dovecot/src/plugins/acl/acl-cache.c /dovecot/src/plugins/expire/doveadm-expire.c /dovecot/src/plugins/fts-lucene/lucene-wrapper.cc /dovecot/src/plugins/fts/fts-expunge-log.c /dovecot/src/pop3/pop3-commands.c /dovecot/src/replication/aggregator/replicator-connection.c
678d0463849ba777106eb7875f27db07a5d8e3df 19-Aug-2012 Timo Sirainen <tss@iki.fi>

Hash table API is now (mostly) type safe.

/dovecot/src/anvil/connect-limit.c /dovecot/src/anvil/penalty.c /dovecot/src/auth/auth-cache.c /dovecot/src/auth/auth-request-handler.c /dovecot/src/auth/db-checkpassword.c /dovecot/src/auth/db-ldap.c /dovecot/src/auth/db-passwd-file.c /dovecot/src/auth/db-passwd-file.h /dovecot/src/auth/mech-otp-skey-common.c /dovecot/src/config/config-request.c /dovecot/src/director/director-test.c /dovecot/src/director/user-directory.c /dovecot/src/doveadm/doveadm-director.c /dovecot/src/doveadm/doveadm-kick.c /dovecot/src/doveadm/doveadm-log.c /dovecot/src/doveadm/doveadm-mail-server.c /dovecot/src/doveadm/doveadm-stats.c /dovecot/src/doveadm/doveadm-who.c /dovecot/src/doveadm/doveadm-who.h /dovecot/src/doveadm/dsync/dsync-brain-mailbox.c /dovecot/src/doveadm/dsync/dsync-brain-private.h /dovecot/src/doveadm/dsync/dsync-brain.c /dovecot/src/doveadm/dsync/dsync-mailbox-export.c /dovecot/src/doveadm/dsync/dsync-mailbox-import.c /dovecot/src/doveadm/dsync/dsync-mailbox-tree-fill.c /dovecot/src/doveadm/dsync/dsync-mailbox-tree-private.h /dovecot/src/doveadm/dsync/dsync-mailbox-tree-sync.c /dovecot/src/doveadm/dsync/dsync-mailbox-tree.c /dovecot/src/doveadm/dsync/dsync-transaction-log-scan.c /dovecot/src/doveadm/dsync/dsync-transaction-log-scan.h /dovecot/src/indexer/indexer-queue.c /dovecot/src/lib-auth/auth-server-connection.c /dovecot/src/lib-auth/auth-server-connection.h /dovecot/src/lib-dict/dict-file.c /dovecot/src/lib-index/mail-cache-fields.c /dovecot/src/lib-index/mail-cache-private.h /dovecot/src/lib-index/mail-cache.c /dovecot/src/lib-index/mail-index-private.h /dovecot/src/lib-index/mail-index.c /dovecot/src/lib-lda/duplicate.c /dovecot/src/lib-master/master-auth.c /dovecot/src/lib-master/master-login-auth.c /dovecot/src/lib-master/master-service-settings-cache.c /dovecot/src/lib-settings/settings-parser.c /dovecot/src/lib-sql/sql-db-cache.c /dovecot/src/lib-storage/index/dbox-multi/mdbox-purge.c /dovecot/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c /dovecot/src/lib-storage/index/index-thread-finish.c /dovecot/src/lib-storage/index/maildir/maildir-filename.c /dovecot/src/lib-storage/index/maildir/maildir-filename.h /dovecot/src/lib-storage/index/maildir/maildir-keywords.c /dovecot/src/lib-storage/index/maildir/maildir-uidlist.c mailbox-list-index-sync.c mailbox-list-index.c mailbox-list-index.h /dovecot/src/lib-storage/mailbox-guid-cache.c /dovecot/src/lib-storage/mailbox-list-private.h /dovecot/src/lib-storage/mailbox-list.c /dovecot/src/lib/child-wait.c /dovecot/src/lib/guid.c /dovecot/src/lib/guid.h /dovecot/src/lib/hash.c /dovecot/src/lib/hash.h /dovecot/src/lib/lib.h /dovecot/src/lib/macros.h /dovecot/src/log/log-connection.c /dovecot/src/login-common/login-proxy-state.c /dovecot/src/login-common/ssl-proxy-openssl.c /dovecot/src/master/service-monitor.c /dovecot/src/master/service-process.c /dovecot/src/master/service.c /dovecot/src/master/service.h /dovecot/src/plugins/acl/acl-cache.c /dovecot/src/plugins/expire/doveadm-expire.c /dovecot/src/plugins/fts-lucene/fts-backend-lucene.c /dovecot/src/plugins/fts-lucene/lucene-wrapper.cc /dovecot/src/plugins/fts-lucene/lucene-wrapper.h /dovecot/src/plugins/fts-solr/fts-backend-solr-old.c /dovecot/src/plugins/fts-solr/fts-backend-solr.c /dovecot/src/plugins/fts-solr/solr-connection.c /dovecot/src/plugins/fts/fts-expunge-log.c /dovecot/src/pop3/pop3-commands.c /dovecot/src/replication/aggregator/replicator-connection.c /dovecot/src/replication/replicator/replicator-queue.c /dovecot/src/stats/mail-domain.c /dovecot/src/stats/mail-ip.c /dovecot/src/stats/mail-session.c /dovecot/src/stats/mail-user.c
8854395cdd21ca521b37ce669f3acb8445792b20 13-Aug-2012 Timo Sirainen <tss@iki.fi>

lib-storage: Added mailbox-list-notify API for tracking changes in all mailboxes. Requires mailbox_list_index=yes to work.

40471588fa7873a231f568a2ffe6fb9acbc76a6d 14-Mar-2012 Timo Sirainen <tss@iki.fi>

mailbox_list_index=yes: Delay opening/creating the index until it's needed. This also fixes an error when trying to create the index before the parent director is created.

0f97c2b6ec76e7f600e983cb952cf265a6189114 13-Mar-2012 Timo Sirainen <tss@iki.fi>

mailbox_list_index=yes iteration: Don't allocate returned mailbox names from data stack. This breaks dsync.

9ea0fe2e0c3e7b83c982634bb26a721049ef9a10 28-Feb-2012 Timo Sirainen <tss@iki.fi>

mailbox list indexes: Avoid unnecessary refresh flag writes.

0daea62c195bd4d7b2bdf5f911e9299d160e2be7 02-Oct-2011 Timo Sirainen <tss@iki.fi>

mailbox list indexes: Added comment.

7887dbfe633d42e38e834f6cb0362695dcf6dc52 02-Oct-2011 Timo Sirainen <tss@iki.fi>

mailbox list indexes: Code cleanups.

3a78410fa59109e276ec3ea964b42fec778437b1 02-Oct-2011 Timo Sirainen <tss@iki.fi>

mailbox list indexes: Error handling fixes.

39140d628bde0e7e35be48739ac3678f1ecf0a9a 02-Oct-2011 Timo Sirainen <tss@iki.fi>

mailbox list indexes: Moved syncing code to separate file.

66e1cf5014bec1cf1a8339be6fccc9be5ad3c793 02-Oct-2011 Timo Sirainen <tss@iki.fi>

mailbox list indexes: Moved iteration code to separate file.

9afe1b3ac43a1f0b4ed8c6b2c369e76957228867 02-Oct-2011 Timo Sirainen <tss@iki.fi>

Renamed index-mailbox-list* to mailbox-list-index*