]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Aki Tuomi [Tue, 9 May 2017 11:01:07 +0000 (14:01 +0300)]
lib-storage: Use new mail_cache_set_seq_corrupted_reason
Aki Tuomi [Tue, 9 May 2017 11:00:38 +0000 (14:00 +0300)]
lib-index: Add mail_cache_set_seq_corrupted_reason
Marks a seq in cache corrupted, and removes
that instead of the whole cache.
Aki Tuomi [Fri, 12 May 2017 10:35:06 +0000 (13:35 +0300)]
lib-storage: Remove index_storage_save_continue
It was not intended for v2.2
Aki Tuomi [Fri, 12 May 2017 04:47:56 +0000 (07:47 +0300)]
lib-storage: Unconstify test functions
Removes a compiler warning
Aki Tuomi [Fri, 12 May 2017 04:41:27 +0000 (07:41 +0300)]
lib: Use t_malloc instead of t_malloc_no0
Broken in
4792d4bd
Timo Sirainen [Tue, 2 May 2017 12:38:00 +0000 (15:38 +0300)]
lib: Add dec2str_buf()
Conflicts:
src/lib/strfuncs.c
Timo Sirainen [Tue, 2 May 2017 15:40:43 +0000 (18:40 +0300)]
master: Send SIGQUIT to processes running at deinit to close socket listeners.
This allows Dovecot to be restarted even when some lmtp/doveadm process is
running for a long time. Otherwise it would keep the inet_listener socket
open and prevent the new Dovecot from binding to the port.
Timo Sirainen [Tue, 2 May 2017 13:13:08 +0000 (16:13 +0300)]
lib-master: When running under master, close listeners immediately on SIGQUIT
Timo Sirainen [Tue, 2 May 2017 15:39:06 +0000 (18:39 +0300)]
lib-master: Remove listener's IO earlier if possible
This is needed for the next change to work properly.
Timo Sirainen [Tue, 2 May 2017 12:56:40 +0000 (15:56 +0300)]
master: Wait more precisely 5 secs at deinit for child processes to die.
Use milliseconds granularity instead of seconds.
Timo Sirainen [Tue, 2 May 2017 12:41:41 +0000 (15:41 +0300)]
lib: Use lib_signals_syscall_error() for write() failure in signal handler
Timo Sirainen [Tue, 2 May 2017 12:41:04 +0000 (15:41 +0300)]
lib: Add lib_signals_syscall_error()
Timo Sirainen [Tue, 9 May 2017 10:15:42 +0000 (13:15 +0300)]
man: Fix doveadm-flags examples
Patch by Frank Ebert
Aki Tuomi [Tue, 9 May 2017 09:25:49 +0000 (12:25 +0300)]
auth: Do not use AUTH_SUBSYS_MECH in logging when request->mech is NULL
This can happen when a lookup is done instead of authentication.
Fixes auth: Panic: file auth-request.c: line 2560 (get_log_prefix): assertion failed: (auth_request->mech != NULL)
Aki Tuomi [Mon, 8 May 2017 09:24:52 +0000 (12:24 +0300)]
passdb-imap: Make sure ssl verification is possible with current settings
Aki Tuomi [Mon, 8 May 2017 09:24:21 +0000 (12:24 +0300)]
passdb-imap: Add ssl_ca_file setting
Allow setting SSL trust roots from a file
Aki Tuomi [Fri, 28 Apr 2017 17:28:23 +0000 (20:28 +0300)]
passdb-imap: Add option to control certificate verification
Turn it on by default
Aki Tuomi [Mon, 8 May 2017 10:35:35 +0000 (13:35 +0300)]
lib-ssl-iostream: Support IP address SANs
Timo Sirainen [Fri, 5 May 2017 09:35:23 +0000 (12:35 +0300)]
imap: Set FETCH transactions hidden only when \Seen flags are implicitly set
This simplifies implementing some plugins and has no downsides to core
functionality.
Timo Sirainen [Thu, 4 May 2017 14:31:47 +0000 (17:31 +0300)]
lib-storage: Fix memory leak in mail_search_args_simplify()
The leaks happened when search args were already initialized (which they
usually were at this point) and some of the args were dropped entirely.
Improved the unit test to initialize search args before calling the
simplify, so valgrind would notice if there are any leaks.
Conflicts:
src/lib-storage/test-mail-search-args-simplify.c
Timo Sirainen [Tue, 2 May 2017 12:02:25 +0000 (15:02 +0300)]
lib-master: Add comments to struct master_service_connection
Conflicts:
src/lib-master/master-service.h
Timo Sirainen [Fri, 28 Apr 2017 11:35:36 +0000 (14:35 +0300)]
lib-storage: When save is aborted, close dest_mail without crashing
Fixes:
Panic: file mail-index-transaction-update.c: line 1023 (mail_index_update_ext): assertion failed: (seq > 0 && (seq <= mail_index_view_get_messages_count(t->view) || seq <= t->last_new_seq))
Because cache was still attempted to be updated, but the mail was already
expunged from index.
Timo Sirainen [Fri, 28 Apr 2017 11:06:43 +0000 (14:06 +0300)]
lib-storage: Move backend code to a common index_storage_save_abort_last()
Conflicts:
src/lib-storage/index/index-storage.c
src/lib-storage/index/index-storage.h
Aki Tuomi [Thu, 27 Apr 2017 11:09:08 +0000 (14:09 +0300)]
auth: Log reason for skipping passdb
Aki Tuomi [Fri, 28 Apr 2017 09:49:37 +0000 (12:49 +0300)]
auth: Add test suite for username filter
Aki Tuomi [Fri, 28 Apr 2017 07:25:14 +0000 (10:25 +0300)]
auth: Refactor auth to use libauth.la
This makes writing new unit tests easier, as you can link
to libauth.la.
Aki Tuomi [Fri, 28 Apr 2017 09:51:20 +0000 (12:51 +0300)]
auth: Add username_filter for passdb block
username_filter lets you specify one or more pattern(s) for
including or excluding users. exclusion patterns are denoted
with ! prefix.
if any exclude matches the username, passdb will be skipped.
if any inclusions is specified, and the username does not match
one of them, passdb will be skipped.
Aki Tuomi [Thu, 27 Apr 2017 08:53:13 +0000 (11:53 +0300)]
auth: Use MECH subsystem when logging error about skipping all password databases
Otherwise it will assert-crash because all password databases were skipped.
Timo Sirainen [Thu, 27 Apr 2017 09:54:20 +0000 (12:54 +0300)]
lib-storage: mail_search_arg_to_imap() - Fix writing invalid keywords
Just write the original invalid keyword string as output. It might not be
entirely invalid - just invalid within this mailbox (e.g. a mailbox doesn't
allow new keywords).
Timo Sirainen [Thu, 27 Apr 2017 09:53:18 +0000 (12:53 +0300)]
lib-storage: Fix searching when search query has invalid keywords.
For example "SEARCH KEYWORD ]" was returning all mails instead of nothing.
Timo Sirainen [Thu, 27 Apr 2017 09:50:13 +0000 (12:50 +0300)]
lib-index: mail_index_update_keywords() - don't assert if adding/removing 0 keywords
Although it would be nice for the caller to check it, it's easier to do
here. It's mainly a problem with mailbox_keywords_create_valid() that may
unexpectedly create empty keywords.
Timo Sirainen [Wed, 26 Apr 2017 20:41:03 +0000 (23:41 +0300)]
quota: imapc backend now never enforces the quota itself
It just causes a lot of GETQUOTA/GETQUOTAROOT calls to remove. In theory we
could make this optional, but I doubt anyone would want it.
Timo Sirainen [Wed, 26 Apr 2017 20:43:24 +0000 (23:43 +0300)]
lib-storage: Fix crash in mail_get_parts() with a special plugin
If plugin hooks into mail_get_stream() which causes data->parts to be set,
this code crashed with:
Panic: file index-mail.c: line 1163 (index_mail_parse_body): assertion failed: (data->parser_ctx != NULL)
Timo Sirainen [Wed, 26 Apr 2017 20:13:20 +0000 (23:13 +0300)]
imapc: Don't send NOOP on sync if MAILBOX_SYNC_FLAG_FAST is set
Fast syncing should do only the minimal amount of work.
Timo Sirainen [Wed, 26 Apr 2017 12:04:23 +0000 (15:04 +0300)]
imap: Allow plugins to hook into syncing.
Ideally all of the existing pieces in the syncing code would start using
this at some point, so their code could be moved to a more logical location.
Timo Sirainen [Wed, 26 Apr 2017 11:57:40 +0000 (14:57 +0300)]
imap: Move struct imap_sync_context to imap-sync-private.h
Timo Sirainen [Tue, 18 Apr 2017 12:55:08 +0000 (15:55 +0300)]
lib-storage: mail_search_arg_to_imap() - minor keywords writing optimization
Avoid an extra str_delete() by checking whether the parenthesis are needed.
Timo Sirainen [Tue, 18 Apr 2017 12:51:39 +0000 (15:51 +0300)]
lib-storage: mail_search_arg_to_imap() - minor FLAGS writing optimization
Avoid an extra str_delete() by immediately calculating whether the
parenthesis are needed.
Timo Sirainen [Tue, 18 Apr 2017 12:38:59 +0000 (15:38 +0300)]
lib: Add bits_is_power_of_two()
Timo Sirainen [Tue, 19 Apr 2016 18:14:37 +0000 (21:14 +0300)]
lib: Fixed bits_required64() with 32bit systems.
Broken by
84f697c5e30565823619abaaeb57164c789d4b66 .
Phil Carmody [Fri, 5 Feb 2016 13:57:30 +0000 (15:57 +0200)]
lib: bits - GCC (and clang) provide bit-twiddle intrinsics, use them
Signed-off-by: Phil Carmody <phil@dovecot.fi>
Phil Carmody [Wed, 3 Feb 2016 16:34:13 +0000 (18:34 +0200)]
lib: bits - new fractional log-like helper
For stats gathering, where the data can have a wide range of values, you
don't necessarily need the same granularity along the full range of values.
For example, 1ms and 11ms latencies are very different, but 1.001s and
1.011s latencies are not worth distinguishing. Something logarithmic seems
more apt. Simply looking at power-of-2 sized bands (e.g. doing log2(n)),
however, is too granular, so these new helpers let you specify how fine
to (linearly) subdivide each of those bands. 1 fractional bit splits
each power of 2 band into 2 halves. 2 fractional bits splits each power
of 2 band into 4 quarters, and so on. 0 fractional bits is just log2().
Exact identification of percentiles is impossible, but it was anyway, as you
simply cannot store all the data required to calculate them. However, a mere
896 buckets will permit you to have 32 bands per power of 2, 5 fracional bits.
The above example would have buckets such as 2.432s-2.496s, and 55.3s-56.3s.
Assuming smooth distribution lets you calculate percentiles more accurately,
just assume within each bucket is a trapezial distribution. This holds even
if the distribution is multi-modal, which it will be. However, maths required.
Signed-off-by: Phil Carmody <phil@dovecot.fi>
Andriy Syrovenko [Sun, 16 Apr 2017 22:14:02 +0000 (01:14 +0300)]
auth: Fixed dovecot/auth hanging when child ntlm_auth crashes while processing an authentication request
Timo Sirainen [Wed, 26 Apr 2017 11:20:49 +0000 (14:20 +0300)]
imapc: Fix memory leak when closing mailbox with delayed changes
Timo Sirainen [Tue, 25 Apr 2017 09:39:04 +0000 (12:39 +0300)]
imapc: Use UID SEARCH instead of SEARCH
UIDs work better for some broken IMAP servers, so it's safer to use it.
Keep using sequences for ESEARCH, since servers supporting it aren't at
least yet known to be broken and the search result with sequences is
smaller.
Timo Sirainen [Mon, 24 Apr 2017 14:59:53 +0000 (17:59 +0300)]
quota: Add imapc backend
This allows using imapc storage with imapc quota. The quota acts as
read-only, so it's used only when the current quota usage is explicitly
asked.
The quota can be looked up using either a mailbox name or quota root name.
By default INBOX's quota is looked up. If there are multiple quota roots
returned for the mailbox, only the first quota root returned by the
QUOTAROOT reply is used.
Timo Sirainen [Mon, 24 Apr 2017 14:58:53 +0000 (17:58 +0300)]
quota: Fix namespace deduplication when mailboxes don't have paths.
Nothing requires a mailbox path for quota backends, especially imapc.
Still do namespace deduplication based on alias_for settings.
Timo Sirainen [Mon, 24 Apr 2017 14:10:10 +0000 (17:10 +0300)]
imapc: include imapc-client.h in imapc-storage.h
It was already required to be able to successfully include imapc-storage.h.
Timo Sirainen [Mon, 24 Apr 2017 15:13:13 +0000 (18:13 +0300)]
imap-plugins: Use client_add_capability() for adding dynamic capabilities
Timo Sirainen [Mon, 24 Apr 2017 15:51:53 +0000 (18:51 +0300)]
imap: Use client_add_capability() for adding all dynamic capabilities
Timo Sirainen [Mon, 24 Apr 2017 15:12:55 +0000 (18:12 +0300)]
imap: Add client_add_capability()
Timo Sirainen [Mon, 24 Apr 2017 10:29:13 +0000 (13:29 +0300)]
imapc: Add imapc_features=fetch-bodystructure
This allows using the remote IMAP server's BODY and BODYSTRUCTURE replies.
Timo Sirainen [Mon, 24 Apr 2017 10:27:43 +0000 (13:27 +0300)]
lib-storage: Add mail_storage.nonbody_access_fields
This avoids index_mail_update_access_parts_pre() from opening the mail
stream unnecessarily for fields that can be looked up via other methods
by the storage.
Timo Sirainen [Mon, 24 Apr 2017 10:05:48 +0000 (13:05 +0300)]
lib-storage: Add index_mail_get_cached_body[structure]()
This just moves the code to these functions without changing any of the
logic.
Timo Sirainen [Mon, 24 Apr 2017 11:04:01 +0000 (14:04 +0300)]
lib-imap: Make imap_bodystructure_parse_args() public
Timo Sirainen [Mon, 24 Apr 2017 09:50:10 +0000 (12:50 +0300)]
lib-imap: Add imap_write_arg() to write only a single arg
Timo Sirainen [Sun, 23 Apr 2017 16:57:11 +0000 (19:57 +0300)]
lib-imap-client: Fix imapc_client_get_capabilities() when called without connections
Timo Sirainen [Sun, 23 Apr 2017 14:19:36 +0000 (17:19 +0300)]
imapc: Fix crash in mailbox_exists() when LAYOUT isn't imapc.
Especially breaks LAYOUT=none.
Timo Sirainen [Sun, 23 Apr 2017 10:35:18 +0000 (13:35 +0300)]
imapc: Support imapc_features=search without ESEARCH extension
Timo Sirainen [Sun, 23 Apr 2017 16:14:54 +0000 (19:14 +0300)]
imapc: Make sure client is logged in when checking capabilities
Especially with imapc_features=delay-login the capability could have been
looked at before the client was even connected.
Timo Sirainen [Sun, 23 Apr 2017 15:51:02 +0000 (18:51 +0300)]
imapc: Add imapc_mailbox.capabilities
Use it instead of imapc_client_get_capabilities(). Simplifies the
following patch.
Timo Sirainen [Sun, 23 Apr 2017 15:57:15 +0000 (18:57 +0300)]
imapc: Rename imapc_storage_has_modseqs() to imapc_mailbox_has_modseqs()
Simplifies the following patch.
Timo Sirainen [Fri, 21 Apr 2017 09:54:17 +0000 (12:54 +0300)]
cassandra: Use fallback consistency for CASS_ERROR_LIB_NO_HOSTS_AVAILABLE errors
I'm not entirely sure if this is always appropriate, but at least this error
happens every time when attempting to use write_consistency=two when there
is only a single Cassandra node.
Timo Sirainen [Fri, 21 Apr 2017 17:59:55 +0000 (20:59 +0300)]
dsync-server: Fix support for dsync_features=empty-header-workaround
Fixes:
Panic: Unknown key: empty_hdr_workaround
Timo Sirainen [Fri, 21 Apr 2017 10:35:33 +0000 (13:35 +0300)]
*-login: Add client_vfuncs.send_raw_data()
This allows login plugins to hook into seeing all the data that is sent to
the imap/pop3 client.
Timo Sirainen [Fri, 21 Apr 2017 10:27:18 +0000 (13:27 +0300)]
imap: Add imap_client_vfuncs.send_tagline()
This allows plugins to catch all the IMAP command replies.
Timo Sirainen [Tue, 18 Apr 2017 07:23:37 +0000 (10:23 +0300)]
*-login: Unload plugins at deinit.
Timo Sirainen [Wed, 19 Apr 2017 12:01:19 +0000 (15:01 +0300)]
lib-storage: Allow mail_add_temp_wanted_fields() to be called before mail_set_seq*()
Quota plugin was already doing this, but it didn't actually work. It was
also crashing with imapc:
Panic: file mail-cache-lookup.c: line 341 (mail_cache_field_exists): assertion failed: (seq > 0)
Timo Sirainen [Thu, 20 Apr 2017 16:16:46 +0000 (19:16 +0300)]
lib-storage: Add mailbox_attribute_unregister_internal[s]()
This allows plugins to unregister internal attributes when they're unloaded.
Timo Sirainen [Thu, 13 Apr 2017 12:13:19 +0000 (15:13 +0300)]
lib-storage: mail_search_args_simplify() - deduplicate flags
This needs to be done in a bit more complicated way because multiple
SEARCH_FLAGS parameters are wanted to be merged together using a single
shared value.flags. Move this merging last after all the deduplication is
done.
Timo Sirainen [Thu, 13 Apr 2017 12:09:19 +0000 (15:09 +0300)]
lib-storage: mail_search_args_simplify() - simplify "x AND NOT x"
Implemented for SEARCH_KEYWORD, SEARCH_TEXT, SEARCH_BODY and SEARCH_HEADER*.
Dates and sizes would need special code, which gets a bit complicated.
Timo Sirainen [Thu, 13 Apr 2017 11:05:55 +0000 (14:05 +0300)]
lib-storage: Add more tests to test-mail-search-args-simplify
Timo Sirainen [Thu, 13 Apr 2017 10:57:41 +0000 (13:57 +0300)]
lib-storage: mail_search_arg_to_imap() - remove () around a single flag/keyword
Timo Sirainen [Thu, 13 Apr 2017 10:04:25 +0000 (13:04 +0300)]
lib-storage: mail_search_args_simplify() - deduplicate KEYWORDs
Timo Sirainen [Thu, 13 Apr 2017 09:51:25 +0000 (12:51 +0300)]
lib-storage: mail_search_args_to_cmdline() - Fix writing FLAGS & KEYWORDS
Timo Sirainen [Thu, 13 Apr 2017 09:36:30 +0000 (12:36 +0300)]
lib-storage: mail_search_args_to_cmdline() - Write MAILBOX glob without X- prefix
Since SEARCH_MAILBOX is written out as "MAILBOX", SEARCH_MAILBOX_GLOB should
also be written as "MAILBOX" rather than "X-MAILBOX".
Aki Tuomi [Tue, 11 Apr 2017 17:39:55 +0000 (20:39 +0300)]
auth: Check var_expand error in vpopmail
Aki Tuomi [Tue, 11 Apr 2017 12:50:14 +0000 (15:50 +0300)]
auth: Filter passdbs on credentials lookup start
Consistency with how plain verify works.
Aki Tuomi [Tue, 11 Apr 2017 12:47:33 +0000 (15:47 +0300)]
auth: Fix mechanism filter to support `none`
Otherwise credentials lookup can fail. None indicates
that it should match when no mech is specified.
Timo Sirainen [Tue, 11 Apr 2017 12:33:22 +0000 (15:33 +0300)]
auth: Use mem_equals_timing_safe() for all password hash comparisons.
It's unlikely these could be used to perform timing attacks, since the
attacker would have to have broken MD5/SHA badly enough to be able to
quickly generate string that result in wanted hashes. Still, the extra
cost is almost nothing and it's always better to be super paranoid!
Timo Sirainen [Sun, 9 Apr 2017 12:31:11 +0000 (15:31 +0300)]
auth: Shuffle failed auth requests before sending the failure replies.
This might be helpful against some timing attacks.
Using Fisher–Yates shuffle.
Timo Sirainen [Sun, 9 Apr 2017 12:19:25 +0000 (15:19 +0300)]
doveadm: Make doveadm_password safe against timing attacks.
Timo Sirainen [Sat, 8 Apr 2017 21:50:15 +0000 (00:50 +0300)]
auth: Make plaintext password comparisons safe against timing attacks
Timo Sirainen [Sat, 8 Apr 2017 21:49:37 +0000 (00:49 +0300)]
lib: Add mem_equals_timing_safe()
Aki Tuomi [Mon, 10 Apr 2017 17:53:29 +0000 (20:53 +0300)]
fts: Initialize fts after namespaces have been added
This way paths are correctly set, and fts indexes are
written to correct place. This affects mbox with lucene.
Fixes Panic: file mailbox-list.c: line 1158 (mailbox_list_try_mkdir_root): assertion failed (strncmp(root_dir, path, strlen(root_dir)) == 0)
Aki Tuomi [Tue, 11 Apr 2017 12:05:53 +0000 (15:05 +0300)]
fts: Remove indentation from fts_mailbox_list_created
Preparation for next commit
Timo Sirainen [Wed, 12 Apr 2017 09:24:05 +0000 (12:24 +0300)]
Makefile: Another fix for make distcheck when using scan-build
It seems to run two configures with different parameters, which results in
some of the files not being cleaned up. So this hopefully fixes:
ERROR: files left in build directory after distclean:
./src/util/tcpwrap
Stephan Bosch [Tue, 11 Apr 2017 07:34:11 +0000 (09:34 +0200)]
lib-imap: imap-bodystructure: Fixed handling of a multipart part without children in imap_bodystructure_parse().
In imap_bodystructure_write(), an empty multipart part is addressed by generating an empty text/plain part.
However, when parsing that back with imap_bodystructure_parse() against a parsed message_part tree, this case needs to be considered explicitly.
Otherwise, it will not be able to match the message part hierarchies.
This adds a test suite item that tests both the write (previous commit) and parse functions.
Stephan Bosch [Wed, 12 Apr 2017 08:13:15 +0000 (10:13 +0200)]
lib-imap: imap-bodystructure: Fixed handling of a multipart part without children in imap_bodystructure_write().
In that case it writes an empty text/plain part to prevent generating an invalid BODYSTRUCURE.
However, it always generated the basic BODY version without the extra fields for a full BODYSTRUCTURE.
Aki Tuomi [Tue, 11 Apr 2017 17:32:19 +0000 (20:32 +0300)]
auth: Fix compile problem with vpopmail
79fe1b28df44ba22b230326bee895583c1df5a28 forgot to remove const from table.
Timo Sirainen [Tue, 11 Apr 2017 11:55:04 +0000 (14:55 +0300)]
Makefile: Fix make distcheck when using scan-build
The _build directory shouldn't be deleted afterwards or it'll just fail.
Timo Sirainen [Tue, 11 Apr 2017 08:23:17 +0000 (11:23 +0300)]
Improve valgrind suppressions.
Aki Tuomi [Wed, 11 Jan 2017 17:43:30 +0000 (19:43 +0200)]
lib-dict-sql: Try merge sets to single update
This attempts to put mergeable keys into same
update instead of using multiple SQL statements.
Timo Sirainen [Tue, 11 Apr 2017 07:11:00 +0000 (10:11 +0300)]
lib, userdb-vpopmail: Fully remove var_expand_table_build()
It was accidentally removed in master-2.2 as part of the changes in
122014ad84488d6309dc7d1572dfc988fedc18c4
This finishes up the removal as it was done in master in
79fe1b28df44ba22b230326bee895583c1df5a28
Timo Sirainen [Mon, 10 Apr 2017 14:07:28 +0000 (17:07 +0300)]
lib-imap-client: Fix reconnection
There was already code for reconnection. We just shouldn't have gone very
far in imapc_connection_connect() if we were still waiting for reconnection
delay to pass.
Timo Sirainen [Mon, 10 Apr 2017 15:12:47 +0000 (18:12 +0300)]
lib-imap-client: Fixes to unit test
Timo Sirainen [Mon, 10 Apr 2017 14:10:21 +0000 (17:10 +0300)]
lib-imap-client: Add unit test
Initially this tests some connection and reconnection problems.
Timo Sirainen [Mon, 10 Apr 2017 14:09:29 +0000 (17:09 +0300)]
lib-imap-client: Include "ms" in reconnect warning message
Timo Sirainen [Mon, 10 Apr 2017 14:06:34 +0000 (17:06 +0300)]
lib-imap-client: Remove hardcoded IMAPC_CONNECT_RETRY_WAIT_MSECS
We have a setting for it now.
Timo Sirainen [Mon, 10 Apr 2017 13:44:52 +0000 (16:44 +0300)]
lib-imap-client: Disconnection during LOGIN should still have state=disconnected
It's not an authentication failure, which would imply that the user or
password was wrong.