]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
7 years agolib-imap-client: Fix IO after enabling SSL
Timo Sirainen [Thu, 8 Feb 2018 00:28:54 +0000 (02:28 +0200)] 
lib-imap-client: Fix IO after enabling SSL

io_add_istream() needs to be used with the SSL istream, otherwise it can
cause hangs.

7 years agodoveadm-server: Fix potential hangs with SSL connections
Timo Sirainen [Fri, 22 Dec 2017 09:25:06 +0000 (11:25 +0200)] 
doveadm-server: Fix potential hangs with SSL connections

7 years agoauth: Add policy check configuration options
Aki Tuomi [Tue, 6 Feb 2018 07:48:11 +0000 (09:48 +0200)] 
auth: Add policy check configuration options

Allows disabling before/after auth checks, or reporting.

7 years agoauth: Use correct username is auth policy requests
Aki Tuomi [Mon, 5 Feb 2018 12:26:15 +0000 (14:26 +0200)] 
auth: Use correct username is auth policy requests

When doing master authentication as first, use
the username of the user, not master user, for policy lookup.

7 years agoauth: Use rip instead of real_rip in policy server attributes
Aki Tuomi [Fri, 1 Dec 2017 11:49:31 +0000 (13:49 +0200)] 
auth: Use rip instead of real_rip in policy server attributes

real_rip contains proxy IP, not client IP

7 years agoreplication: Don't send notification for changes done by dsync transactions
Timo Sirainen [Tue, 6 Feb 2018 13:12:26 +0000 (15:12 +0200)] 
replication: Don't send notification for changes done by dsync transactions

7 years agolib-storage: Set mailbox_transaction_context.flags earlier
Timo Sirainen [Tue, 6 Feb 2018 13:10:48 +0000 (15:10 +0200)] 
lib-storage: Set mailbox_transaction_context.flags earlier

Set it in index_transaction_init() so plugins' transaction_begin() methods
see it after calling super.transaction_begin().

7 years agodoveadm-server: http: Fixed lingering connections after the request is sent.
Stephan Bosch [Tue, 17 Oct 2017 01:19:19 +0000 (03:19 +0200)] 
doveadm-server: http: Fixed lingering connections after the request is sent.

Turns out conn->http_client is already NULL while doveadm_http_server_connection_destroy() is called.
This is because http_server_connection_unref() sets it to NULL;
Fixed by removing useless HTTP connection reference.

7 years agodoveadm-server: http: Fixed crash occurring when disconnecting a client at server...
Stephan Bosch [Sun, 18 Jun 2017 17:55:23 +0000 (19:55 +0200)] 
doveadm-server: http: Fixed crash occurring when disconnecting a client at server deinit.

7 years agoold-stats: Set process dumpable during stats gathering
Aki Tuomi [Thu, 8 Feb 2018 11:04:48 +0000 (13:04 +0200)] 
old-stats: Set process dumpable during stats gathering

/proc/self/io is not accessible otherwise

7 years agolib: Add restrict_access_get/set_dumpable
Aki Tuomi [Thu, 8 Feb 2018 11:03:37 +0000 (13:03 +0200)] 
lib: Add restrict_access_get/set_dumpable

7 years agolib: Clarify restrict_access_allow_coredumps
Aki Tuomi [Thu, 8 Feb 2018 11:01:50 +0000 (13:01 +0200)] 
lib: Clarify restrict_access_allow_coredumps

7 years agolib-index: Fix assert-crash with lock_method=dotlock
Timo Sirainen [Wed, 7 Feb 2018 14:17:13 +0000 (16:17 +0200)] 
lib-index: Fix assert-crash with lock_method=dotlock

The dotlock wasn't deleted in all code paths. Fix this by simplifying
the unlocking to be done the same way with and without dotlock.

Fixes:
Panic: file mail-cache.c: line 624 (mail_cache_lock_file): assertion failed: (cache->dotlock == NULL)

7 years agolib-storage: Lock mailbox_list for mailbox create/delete/rename
Timo Sirainen [Tue, 9 Jan 2018 20:37:25 +0000 (15:37 -0500)] 
lib-storage: Lock mailbox_list for mailbox create/delete/rename

This is only required for mailbox creation to fix a race condition with
LAYOUT=index: If INBOX doesn't exist it will rescan the mailboxes to
find out if there are any missing ones. If INBOX creation isn't locked,
it's possible that the first process hasn't finished creating INBOX
before the second process find it and attempts to open it.

The delete and rename locking are probably useful to guard against race
conditions when clients intentionally issues create/delete/rename commands
concurrently.

7 years agolib-storage: Add mailbox_list_[un]lock()
Timo Sirainen [Tue, 9 Jan 2018 20:36:58 +0000 (15:36 -0500)] 
lib-storage: Add mailbox_list_[un]lock()

7 years agolib-storage: mailbox_delete() - Fix cleanup in error handling
Timo Sirainen [Tue, 9 Jan 2018 20:35:13 +0000 (15:35 -0500)] 
lib-storage: mailbox_delete() - Fix cleanup in error handling

If removing index deletion mark failed, box->deleting wasn't set to FALSE
and the mailbox was left opened.

7 years agolib-storage: mailbox_rename() - Use source storage for errors
Timo Sirainen [Tue, 9 Jan 2018 20:33:26 +0000 (15:33 -0500)] 
lib-storage: mailbox_rename() - Use source storage for errors

It was documented to use source storage for errors, but some of the errors
were set to destination storage.

7 years agolib-storage: mail_storage_lock_create() - add support for dotlocks
Timo Sirainen [Tue, 6 Feb 2018 16:01:04 +0000 (18:01 +0200)] 
lib-storage: mail_storage_lock_create() - add support for dotlocks

7 years agolib-storage: Change mail_user_lock_file_create() to use mail_storage_lock_create()
Timo Sirainen [Tue, 6 Feb 2018 15:49:15 +0000 (17:49 +0200)] 
lib-storage: Change mail_user_lock_file_create() to use mail_storage_lock_create()

7 years agolib-storage: Add mail_storage_lock_create()
Timo Sirainen [Tue, 6 Feb 2018 15:47:37 +0000 (17:47 +0200)] 
lib-storage: Add mail_storage_lock_create()

This is split off of mailbox_lock_file_create().

7 years agolib: Add file_lock_from_dotlock()
Timo Sirainen [Tue, 6 Feb 2018 15:35:18 +0000 (17:35 +0200)] 
lib: Add file_lock_from_dotlock()

The dotlock creation requires various settings, so the file-lock.h API can't
easily be used to create it. But once created, it's simpler to keep all lock
types in the same struct file_lock, which can be unlocked/freed once
finished.

7 years agoLAYOUT=index: Fix crash in doveadm force-resync if storage doesn't implement list_ind...
Timo Sirainen [Wed, 13 Dec 2017 13:48:17 +0000 (15:48 +0200)] 
LAYOUT=index: Fix crash in doveadm force-resync if storage doesn't implement list_index_corrupted()

Broken by recent changes.

7 years agoLAYOUT=index: Fix updating STATUS changes in mailbox list index
Timo Sirainen [Tue, 12 Dec 2017 16:10:40 +0000 (18:10 +0200)] 
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.

7 years agofs-posix: Fix iterating directories when readdir() returns DT_UNKNOWN
Timo Sirainen [Tue, 6 Feb 2018 10:37:34 +0000 (12:37 +0200)] 
fs-posix: Fix iterating directories when readdir() returns DT_UNKNOWN

Files were iterated correctly, but directories weren't. This mainly broke
directory iteration with NFS when nordirplus mount option was used.

7 years agofts: Don't reindex FTS mails if .cache file is deleted
Timo Sirainen [Mon, 5 Feb 2018 20:21:13 +0000 (22:21 +0200)] 
fts: Don't reindex FTS mails if .cache file is deleted

This means that if fts is enabled, "doveadm index" no longer adds mails
to dovecot.index.cache if it's deleted. However, it was rarely used for
that purpose. More likely due to a corrupted cache file all the mails were
unnecessarily being opened and reindexed.

7 years agocassandra: Make sure timestamp is always logged (if set) with debug_queries=y
Timo Sirainen [Wed, 7 Feb 2018 13:28:45 +0000 (15:28 +0200)] 
cassandra: Make sure timestamp is always logged (if set) with debug_queries=y

It wasn't logged in some code paths.

7 years agocassandra: Fix setting timestamp for transaction queries with v3 protocol
Timo Sirainen [Wed, 7 Feb 2018 13:27:07 +0000 (15:27 +0200)] 
cassandra: Fix setting timestamp for transaction queries with v3 protocol

It was working for prepared statements, but not for non-prepared statements.

7 years agodoveadm: dsync: Switch ioloop for input/output streams while making TCP connection.
Stephan Bosch [Mon, 29 Jan 2018 18:10:38 +0000 (19:10 +0100)] 
doveadm: dsync: Switch ioloop for input/output streams while making TCP connection.

This task is performed in a sub-ioloop, and when returning from that ioloop, the
output stream would sometimes still have an object on the sub-ioloop that was
just destroyed.

7 years agolib-ssl-iostream: openssl: Make verbose logging robust against i_debug() writing...
Stephan Bosch [Mon, 29 Jan 2018 17:28:25 +0000 (18:28 +0100)] 
lib-ssl-iostream: openssl: Make verbose logging robust against i_debug() writing to stream itself.

In dsync, i_debug() is overridden to write to the SSL stream itself through a
multiplexed data stream. So, during the i_debug() call all kinds of things can
happen to the persisted error string in the stream, which caused problems.

7 years agofts: Fix searching headers with TEXT/BODY
Timo Sirainen [Mon, 5 Feb 2018 21:54:33 +0000 (23:54 +0200)] 
fts: Fix searching headers with TEXT/BODY

TEXT is searching headers and BODY is searching MIME headers. Those headers
were indexed with data language, so search must also include data language
when looking up words. We'll just include the data language for all
searches now, so it should always work correctly.

7 years agofts: Fix searching SEARCH_HEADER_ADDRESS/COMPRESS_LWSP
Timo Sirainen [Mon, 5 Feb 2018 21:51:51 +0000 (23:51 +0200)] 
fts: Fix searching SEARCH_HEADER_ADDRESS/COMPRESS_LWSP

These are "non-language" headers that are being searched, so they need to be
searched using data language.

7 years agolib-http: queue: Update the correct timout while dropping a request from the delay...
Stephan Bosch [Fri, 12 Jan 2018 20:03:41 +0000 (21:03 +0100)] 
lib-http: queue: Update the correct timout while dropping a request from the delay queue.

The absolute request timeout rather than the delay timeout was updated for the
removal of the request from the delay queue.

7 years agolib: time-util: Fix timeval_cmp_margin() to correctly handle a margin crossing the...
Stephan Bosch [Tue, 6 Feb 2018 14:50:19 +0000 (15:50 +0100)] 
lib: time-util: Fix timeval_cmp_margin() to correctly handle a margin crossing the second boundary.

The timeval_cmp_margin() function incorrectly assumed that the margin is
irrelevent when the tv_sec values are different.

7 years agolib: test-time-util: Put all test data for timeval_cmp() test in a single struct...
Stephan Bosch [Tue, 6 Feb 2018 15:51:23 +0000 (16:51 +0100)] 
lib: test-time-util: Put all test data for timeval_cmp() test in a single struct array.

7 years agolib-imap-client: continue imapc operation on parsing errors.
Sergey Kitov [Mon, 5 Feb 2018 11:38:16 +0000 (13:38 +0200)] 
lib-imap-client: continue imapc operation on parsing errors.

7 years agoimap: Iterate over ns settings when deciding to add SPECIAL-USE capability
Josef 'Jeff' Sipek [Mon, 29 Jan 2018 14:55:51 +0000 (09:55 -0500)] 
imap: Iterate over ns settings when deciding to add SPECIAL-USE capability

To determine whether we should add the SPECIAL-USE capability to the
OK response to LOGIN, we have to iterate over namespace and mailbox
*settings* since the namespaces haven't been set up yet.

7 years agolib: test-var-expand - Ensure var_get_key_range_full handles nested ifs correctly
Aki Tuomi [Tue, 5 Dec 2017 15:05:27 +0000 (17:05 +0200)] 
lib: test-var-expand - Ensure var_get_key_range_full handles nested ifs correctly

7 years agolib: var-expand - handle \{ and \} correctly
Aki Tuomi [Fri, 1 Dec 2017 17:46:58 +0000 (19:46 +0200)] 
lib: var-expand - handle \{ and \} correctly

Do not treat these as embedded braces

7 years agolib: Support nested keys in var_get_key_range_full
Aki Tuomi [Fri, 1 Dec 2017 12:53:46 +0000 (14:53 +0200)] 
lib: Support nested keys in var_get_key_range_full

Fixes problems with %{if...}

failed: if: requires four or five parameters, got 1

7 years agolib-storage: Fix adding body.snippet to cache
Timo Sirainen [Thu, 25 Jan 2018 10:27:41 +0000 (12:27 +0200)] 
lib-storage: Fix adding body.snippet to cache

Unless body.snippet was in mail_always_cache_fields, it didn't get added to
the cache file.

7 years agolib-storage: Add comment to how mail_cache_field_can/want_add() is used
Timo Sirainen [Thu, 25 Jan 2018 10:35:51 +0000 (12:35 +0200)] 
lib-storage: Add comment to how mail_cache_field_can/want_add() is used

7 years agolib-index: Update comments for mail_cache_decision_*()
Timo Sirainen [Thu, 25 Jan 2018 10:35:35 +0000 (12:35 +0200)] 
lib-index: Update comments for mail_cache_decision_*()

7 years agoimap,pop3: Properly terminate logout tab.
Aki Tuomi [Sun, 4 Feb 2018 11:40:12 +0000 (13:40 +0200)] 
imap,pop3: Properly terminate logout tab.

Fixes Fatal: master: service(imap): child killed with signal 11

Broken in e0a42caee5a04d29cfa95ae7719aeaa708001255 and
1ecc087ee90439787de7df9b9a60e0d35b5dda07

7 years agoauth: passdb-cache - Verify credentials with worker when enabled
Aki Tuomi [Mon, 8 Jan 2018 13:08:10 +0000 (15:08 +0200)] 
auth: passdb-cache - Verify credentials with worker when enabled

7 years agoauth: Expose auth_request_verify_plain_callback_finish
Aki Tuomi [Mon, 8 Jan 2018 13:00:17 +0000 (15:00 +0200)] 
auth: Expose auth_request_verify_plain_callback_finish

7 years agoauth-worker: Support PASSW request
Aki Tuomi [Mon, 8 Jan 2018 13:09:28 +0000 (15:09 +0200)] 
auth-worker: Support PASSW request

This will attempt to verify given credentials.

7 years agoauth-worker: Add auth_worker_auth_request_new
Aki Tuomi [Mon, 8 Jan 2018 12:52:10 +0000 (14:52 +0200)] 
auth-worker: Add auth_worker_auth_request_new

Replaces worker_auth_request_new, moves in
check for username and service. Simplifies code.

7 years agoauth: passdb-blocking - Expose passdb_blocking_auth_worker_reply_parse
Aki Tuomi [Tue, 2 Jan 2018 10:33:50 +0000 (12:33 +0200)] 
auth: passdb-blocking - Expose passdb_blocking_auth_worker_reply_parse

Enables sharing code with passdb cache

7 years agopop3: Include mail user variables in logout format
Aki Tuomi [Mon, 4 Dec 2017 09:01:31 +0000 (11:01 +0200)] 
pop3: Include mail user variables in logout format

7 years agoimap: Include mail user variables in logout format
Aki Tuomi [Mon, 4 Dec 2017 09:01:05 +0000 (11:01 +0200)] 
imap: Include mail user variables in logout format

7 years agolib: var-expand - Add table size and merge utility functions
Aki Tuomi [Tue, 5 Dec 2017 21:49:27 +0000 (23:49 +0200)] 
lib: var-expand - Add table size and merge utility functions

7 years agolib-program-client: local: Add test for big data I/O.
Stephan Bosch [Sat, 20 Jan 2018 20:32:07 +0000 (21:32 +0100)] 
lib-program-client: local: Add test for big data I/O.

7 years agolib-program-client: remote: Don't change exit_code in program_client_remote_disconnec...
Stephan Bosch [Wed, 24 Jan 2018 00:09:16 +0000 (01:09 +0100)] 
lib-program-client: remote: Don't change exit_code in program_client_remote_disconnect() when program_input is already NULL.

When the program_input is NULL, the stream is finished, meaning that the
exit_code is set based on the return code. There can be a program_input for
remote streams, even when the program produces no output.

7 years agolib-program-client: Use reliable means of checking for input stream EOF.
Stephan Bosch [Mon, 22 Jan 2018 22:25:34 +0000 (23:25 +0100)] 
lib-program-client: Use reliable means of checking for input stream EOF.

7 years agolib-storage: Set keyword based on attachment presence when saving
Aki Tuomi [Sat, 11 Nov 2017 08:07:42 +0000 (10:07 +0200)] 
lib-storage: Set keyword based on attachment presence when saving

If attachment is detected, use $HasAttachment, if not
use $HasNoAttachment

7 years agolib-storage: Add attachment detection settings
Aki Tuomi [Mon, 20 Nov 2017 08:09:23 +0000 (10:09 +0200)] 
lib-storage: Add attachment detection settings

7 years agolib-mail: Add message_part_has_attachment
Aki Tuomi [Fri, 10 Nov 2017 12:32:44 +0000 (14:32 +0200)] 
lib-mail: Add message_part_has_attachment

7 years agoimapc: Fix deleting mailbox
Timo Sirainen [Mon, 22 Jan 2018 11:33:29 +0000 (13:33 +0200)] 
imapc: Fix deleting mailbox

Broken by f8f30bd27e41e1041a8de0b97f35d7d75e0a412e

7 years agolog: Fix log reopening on SIGUSR1
Timo Sirainen [Mon, 6 Nov 2017 23:33:57 +0000 (01:33 +0200)] 
log: Fix log reopening on SIGUSR1

7 years agolib-auth: Remove request after abort
Aki Tuomi [Fri, 26 Jan 2018 08:55:54 +0000 (10:55 +0200)] 
lib-auth: Remove request after abort

Otherwise the request will still stay in hash table
and get dereferenced when all requests are aborted
causing an attempt to access free'd memory.

Found by Apollon Oikonomopoulos <apoikos@debian.org>

Broken in 1a29ed2f96da1be22fa5a4d96c7583aa81b8b060

7 years agolib-auth: Fix memory leak in auth_client_request_abort()
Timo Sirainen [Mon, 18 Dec 2017 14:50:51 +0000 (16:50 +0200)] 
lib-auth: Fix memory leak in auth_client_request_abort()

This caused memory leaks when authentication was aborted. For example
with IMAP:

a AUTHENTICATE PLAIN
*

Broken by 9137c55411aa39d41c1e705ddc34d5bd26c65021

7 years agomail-crypt: Do not free global keys if no error has occured
Aki Tuomi [Thu, 16 Nov 2017 11:27:23 +0000 (13:27 +0200)] 
mail-crypt: Do not free global keys if no error has occured

7 years agolib-index: Write forced cache decision changes immediately to cache file
Timo Sirainen [Wed, 24 Jan 2018 16:01:48 +0000 (18:01 +0200)] 
lib-index: Write forced cache decision changes immediately to cache file

When mail_always/never_cache_fields doesn't match the current caching
decisions in the cache file, write the updated decisions to the file.

7 years agolib-index: Code cleanup for reading caching decisions
Timo Sirainen [Wed, 24 Jan 2018 16:01:23 +0000 (18:01 +0200)] 
lib-index: Code cleanup for reading caching decisions

No functional changes.

7 years agolib-index: Finish fixing removal of forced cache decisions from existing cache files
Timo Sirainen [Wed, 24 Jan 2018 15:58:57 +0000 (17:58 +0200)] 
lib-index: Finish fixing removal of forced cache decisions from existing cache files

6ef2504d020461b0f480766c41596595a4300023 didn't fix it for already known
fields.

7 years agolib-index: Fix removal of forced cache decisions from existing cache files
Timo Sirainen [Mon, 22 Jan 2018 22:04:28 +0000 (00:04 +0200)] 
lib-index: Fix removal of forced cache decisions from existing cache files

The forced-flags are written to the cache file when the file is created.
They were also read back, and the force-flag was preserved even when the
configuration was removed.

7 years agolib-index: Fix adding forced cache decisions to existing cache files
Timo Sirainen [Mon, 22 Jan 2018 15:38:32 +0000 (17:38 +0200)] 
lib-index: Fix adding forced cache decisions to existing cache files

If a field already existed in the cache file, the cache decision from the
file was always used. This caused force-decisions to be ignored.

7 years agomdbox: Fix rebuilding when dovecot.map.index is missing map/ref extension
Timo Sirainen [Mon, 20 Nov 2017 15:03:47 +0000 (17:03 +0200)] 
mdbox: Fix rebuilding when dovecot.map.index is missing map/ref extension

The rebuild kept just repeatedly failing with:
Error: mdbox map .../dovecot.map.index corrupted: missing map extension

7 years agoimap: support for FETCH SNIPPET
Josef 'Jeff' Sipek [Thu, 4 Jan 2018 17:44:16 +0000 (12:44 -0500)] 
imap: support for FETCH SNIPPET

7 years agolib: Call prctl(PR_SET_DUMPABLE) only when PR_SET_DUMPABLE env variable is set
Sergey Kitov [Tue, 21 Nov 2017 11:27:18 +0000 (13:27 +0200)] 
lib: Call prctl(PR_SET_DUMPABLE) only when PR_SET_DUMPABLE env variable is set

7 years agolib: Add logging of prctl(PR_SET_DUMPABLE) failure.
Sergey Kitov [Wed, 22 Nov 2017 09:34:47 +0000 (11:34 +0200)] 
lib: Add logging of prctl(PR_SET_DUMPABLE) failure.

7 years agoimapc: Fix imap_features=no-msn-updates to not fail on SELECT
Timo Sirainen [Tue, 16 Jan 2018 16:17:00 +0000 (18:17 +0200)] 
imapc: Fix imap_features=no-msn-updates to not fail on SELECT

The initial EXISTS reply shouldn't be ignored, only the following ones.

7 years agoimapc: Add imapc_features=no-msn-updates
Timo Sirainen [Mon, 25 Dec 2017 09:10:19 +0000 (11:10 +0200)] 
imapc: Add imapc_features=no-msn-updates

This is a stricter version of fetch-msn-workarounds. The MSNs aren't trusted
at all. This means any new untagged EXISTS and EXPUNGE replies are ignored,
as well as untagged FETCH replies that don't include UID.

A potential downside with this feature is that UID FETCH/STORE commands
sent to expunged messages will likely fail without the IMAP client being
notified of the EXPUNGEs. New mails are also not noticed, so this should
be used only when it's known that the clients don't keep the connection
open for long.

7 years agoimapc: Fix sending initial FETCH after reconnection SELECTs mailbox
Timo Sirainen [Mon, 25 Dec 2017 14:11:26 +0000 (16:11 +0200)] 
imapc: Fix sending initial FETCH after reconnection SELECTs mailbox

Move sending the FETCH when the SELECT returns tagged OK reply instead of
delaying it until mailbox is next synced. Most importantly this allows
sending the FETCH before any retried commands that are also sent after
SELECT receives tagged reply.

7 years agoimapc: gmail-migration: Fetch X-GM-MSGID for new mails as well
Timo Sirainen [Mon, 25 Dec 2017 20:48:00 +0000 (22:48 +0200)] 
imapc: gmail-migration: Fetch X-GM-MSGID for new mails as well

I'm not sure why it was originally restricted only for the initial FETCH.
Fetching GUIDs for new mails can be just as useful.

7 years agoimapc: Move imapc_mailbox_fetch_state*() to imapc-mailbox.c
Timo Sirainen [Mon, 25 Dec 2017 18:21:40 +0000 (20:21 +0200)] 
imapc: Move imapc_mailbox_fetch_state*() to imapc-mailbox.c

Mainly to make the next commit smaller.

7 years agoimapc: Handle untagged UIDVALIDITY immediately
Timo Sirainen [Mon, 25 Dec 2017 17:19:09 +0000 (19:19 +0200)] 
imapc: Handle untagged UIDVALIDITY immediately

This is part of the changes to fix mailbox resyncing after reconnect.

7 years agoimapc: If mailbox select fails, rollback any changes done to it
Timo Sirainen [Mon, 25 Dec 2017 17:34:31 +0000 (19:34 +0200)] 
imapc: If mailbox select fails, rollback any changes done to it

Required by the following changes that start adding changes immediately
after SELECT. If the initial syncing doesn't finish successfully, these
changes need to be reverted.

7 years agoimapc: Keep "selected" state TRUE only while mailbox is successfully SELECTed
Timo Sirainen [Mon, 25 Dec 2017 17:33:33 +0000 (19:33 +0200)] 
imapc: Keep "selected" state TRUE only while mailbox is successfully SELECTed

7 years agoimapc: Fix leaking mail_index_view on delayed expunge handling
Timo Sirainen [Wed, 17 Jan 2018 13:05:38 +0000 (15:05 +0200)] 
imapc: Fix leaking mail_index_view on delayed expunge handling

Fixes:
Panic: Leaked view for index (in-memory index): Opened in imapc-mailbox.c:47

7 years agolib-imap-client: Avoid "Unknown tag" errors for aborted commands
Timo Sirainen [Wed, 17 Jan 2018 13:03:06 +0000 (15:03 +0200)] 
lib-imap-client: Avoid "Unknown tag" errors for aborted commands

If mailbox is closed before all command replies were received, the commands
were aborted but they'll still receive the replies from server. Remember
the aborted commands' tag numbers so they can be ignored.

7 years agolib-imap-client: Fix reason text when unselecting mailbox aborts commands
Timo Sirainen [Wed, 17 Jan 2018 13:02:09 +0000 (15:02 +0200)] 
lib-imap-client: Fix reason text when unselecting mailbox aborts commands

7 years agolib-imap-client: Add asserts for reconnect_command_count
Timo Sirainen [Mon, 25 Dec 2017 19:31:05 +0000 (21:31 +0200)] 
lib-imap-client: Add asserts for reconnect_command_count

7 years agolib-imap-client: Delay sending more commands while SELECT is running
Timo Sirainen [Mon, 25 Dec 2017 19:29:06 +0000 (21:29 +0200)] 
lib-imap-client: Delay sending more commands while SELECT is running

7 years agolib-imap-client: After reconnection send retried commands last
Timo Sirainen [Mon, 25 Dec 2017 16:49:15 +0000 (18:49 +0200)] 
lib-imap-client: After reconnection send retried commands last

Previously only SELECT was sent before others. This allows sending more
commands on reconnection before the retried commands.

7 years agodoveadm: client - Fix connecting to UNIX sockets that don't need authentication
Timo Sirainen [Wed, 8 Nov 2017 14:03:17 +0000 (16:03 +0200)] 
doveadm: client - Fix connecting to UNIX sockets that don't need authentication

Trying to access doveadm UNIX socket that didn't require authentication
failed with:

Error: doveadm server sent invalid handshake: ...

7 years agodoveadm: client - Cleanup: Rename handshaked to authenticate_sent
Timo Sirainen [Wed, 8 Nov 2017 14:01:11 +0000 (16:01 +0200)] 
doveadm: client - Cleanup: Rename handshaked to authenticate_sent

This better describes what it does.

7 years agodoveadm-server: Fix protocol handshake order
Timo Sirainen [Wed, 8 Nov 2017 12:06:00 +0000 (14:06 +0200)] 
doveadm-server: Fix protocol handshake order

With version 1.1 protocol, server sent the authentication "+" or "-" line
before the VERSION. doveadm client accepts the VERSION reply either before
or after, so this change doesn't break it. It makes the protocol cleaner
though.

Based on patch by Manuel Mausz

7 years agodoveadm-server: Add client_connection.preauthenticated
Timo Sirainen [Wed, 8 Nov 2017 12:04:12 +0000 (14:04 +0200)] 
doveadm-server: Add client_connection.preauthenticated

7 years agolib-ssl-iostream: Verify SSL server's hostname against cert if it's non-NULL
Timo Sirainen [Tue, 31 Oct 2017 21:37:44 +0000 (23:37 +0200)] 
lib-ssl-iostream: Verify SSL server's hostname against cert if it's non-NULL

The hostname verification was skipped when handshake-callback wasn't used.
All of the existing code used the callback though, so this doesn't fix
any bugs.

7 years agolib-ssl-iostream: Fix checking cert validity when handshake callback isn't used
Timo Sirainen [Tue, 31 Oct 2017 17:49:56 +0000 (19:49 +0200)] 
lib-ssl-iostream: Fix checking cert validity when handshake callback isn't used

7 years agolib-ssl-iostream: Split host to connected_host and sni_host
Timo Sirainen [Wed, 1 Nov 2017 10:58:46 +0000 (12:58 +0200)] 
lib-ssl-iostream: Split host to connected_host and sni_host

Using the same variable for both was causing confusion.

7 years agocassandra: Fix crash when using prepared statements
Timo Sirainen [Thu, 14 Dec 2017 18:56:36 +0000 (20:56 +0200)] 
cassandra: Fix crash when using prepared statements

Broken by cae3c6903c10682429f9849ab1a25093e3f538e4

7 years agodriver-cassandra: Free statement pool on update
Aki Tuomi [Thu, 7 Dec 2017 07:48:51 +0000 (09:48 +0200)] 
driver-cassandra: Free statement pool on update

Otherwise the pool memory will leak. This was happening with non-prepared
statements when version was older than 4.

7 years agodoveconf: add hostname to output
Jarkko Mourujärvi [Thu, 28 Dec 2017 11:53:14 +0000 (13:53 +0200)] 
doveconf: add hostname to output

7 years agolib-http: Only depend on iostream openssl lib if building with openssl
Aki Tuomi [Thu, 28 Dec 2017 08:47:28 +0000 (10:47 +0200)] 
lib-http: Only depend on iostream openssl lib if building with openssl

Fixes build without openssl

7 years agolib-storage: mail_storage_set_index_error() - handle NULL index error
Timo Sirainen [Mon, 25 Dec 2017 16:24:35 +0000 (18:24 +0200)] 
lib-storage: mail_storage_set_index_error() - handle NULL index error

This avoids assert-crashing later on in mail*_get_last_internal_error().

This could potentially be an assert instead of setting it as "BUG", but
it looks like there are various code paths in lib-index that return -1
without setting an error. (That's to avoid duplicate error logging,
although it could now be fixed with mail_index_set_error_nolog().)

7 years agolib-storage: Set index error on transaction commit() callback
Timo Sirainen [Mon, 25 Dec 2017 16:18:14 +0000 (18:18 +0200)] 
lib-storage: Set index error on transaction commit() callback

The commit callback is setting errors to storage. However, it's being
called from mail_index_transaction_commit() whose callers are expecting
the error to be in index. If that index error was attempted to be used,
it could have been wrong or NULL. Fix this by setting the same storage
error also to the index.

7 years agolib-index: Add mail_index_set_error_nolog()
Timo Sirainen [Mon, 25 Dec 2017 16:17:57 +0000 (18:17 +0200)] 
lib-index: Add mail_index_set_error_nolog()

7 years agolib-http: test-http-client - conditionally depend on openssl
Aki Tuomi [Thu, 7 Dec 2017 06:20:02 +0000 (08:20 +0200)] 
lib-http: test-http-client - conditionally depend on openssl

Fixes compiling without openssl, broken by c45da70c