[dovecot/core] 7eb0f6: lib-imap-client: Avoid infinite reconnection loops...

GitHub noreply at github.com
Fri May 19 14:00:14 EEST 2017


  Branch: refs/heads/master-2.2
  Home:   https://github.com/dovecot/core
  Commit: 7eb0f6c02f2d0d662e77bf7c126ff3664c7a50b1
      https://github.com/dovecot/core/commit/7eb0f6c02f2d0d662e77bf7c126ff3664c7a50b1
  Author: Timo Sirainen <timo.sirainen at dovecot.fi>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/lib-imap-client/imapc-client.h
    M src/lib-imap-client/imapc-connection.c

  Log Message:
  -----------
  lib-imap-client: Avoid infinite reconnection loops when retrying command fails

reconnect_command_count wasn't calculated correctly, because the SELECT and
potentially other following sync commands weren't included in it.


  Commit: 890b2c9bba8f955c694b01cc064ce03b551258f9
      https://github.com/dovecot/core/commit/890b2c9bba8f955c694b01cc064ce03b551258f9
  Author: Timo Sirainen <timo.sirainen at dovecot.fi>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/lib-storage/index/imapc/imapc-storage.c

  Log Message:
  -----------
  imapc: If initial SELECT fails, don't resend it twice on reconnect.


  Commit: cd56eb08bcfa27317babb4cead2c0d1c715677fd
      https://github.com/dovecot/core/commit/cd56eb08bcfa27317babb4cead2c0d1c715677fd
  Author: Timo Sirainen <timo.sirainen at dovecot.fi>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/lib-storage/index/imapc/imapc-sync.c

  Log Message:
  -----------
  imapc: Avoid resending duplicate FETCH when reconnecting during the initial sync


  Commit: 5e1694a575134fa95f530ea6da7c6b7fdc7b71e0
      https://github.com/dovecot/core/commit/5e1694a575134fa95f530ea6da7c6b7fdc7b71e0
  Author: Timo Sirainen <timo.sirainen at dovecot.fi>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/lib-imap/imap-parser.c

  Log Message:
  -----------
  lib-imap: imap_parser_unref() should always set parser=NULL

Not just when the last reference is cleared. This is how *_unref()s should
work everywhere in Dovecot. This fixes a bug in lib-imap-client where a
parser could have been accessed after it was already freed.


  Commit: ec7aec974ee60a48cb04def2cd4440eff01bc3b7
      https://github.com/dovecot/core/commit/ec7aec974ee60a48cb04def2cd4440eff01bc3b7
  Author: Timo Sirainen <timo.sirainen at dovecot.fi>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/lib-imap-client/imapc-client.c
    M src/lib-imap-client/imapc-client.h
    M src/lib-imap-client/imapc-connection.c
    M src/lib-imap-client/imapc-connection.h
    M src/lib-storage/index/imapc/imapc-mailbox.c
    M src/lib-storage/index/imapc/imapc-storage.c

  Log Message:
  -----------
  imapc: Fix infinite reconnection when server keeps sending corrupted state

When corrupted state was found, imapc_client_mailbox_reconnect() is called
to reconnect. This call skipped the normal "is it safe to reconnect?"
checks causing potentially infinite reconnections.


  Commit: dacfe2acf5a33c797a70c22dfa554b656259e222
      https://github.com/dovecot/core/commit/dacfe2acf5a33c797a70c22dfa554b656259e222
  Author: Timo Sirainen <timo.sirainen at dovecot.fi>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/lib-imap-client/imapc-client.c
    M src/lib-imap-client/imapc-connection.c
    M src/lib-imap-client/imapc-connection.h

  Log Message:
  -----------
  lib-imap-client: Change server IP only on connect() failures

Also log an warning-level message about it. This is mainly useful to see
that a slow connection could be caused by a connect() timeout. Since more
IPs are still available, it's not yet an error.


  Commit: d13fe79132d7e6f83b19ca879e4a00c6044b3759
      https://github.com/dovecot/core/commit/d13fe79132d7e6f83b19ca879e4a00c6044b3759
  Author: Timo Sirainen <timo.sirainen at dovecot.fi>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/lib-storage/index/imapc/imapc-storage.c

  Log Message:
  -----------
  imapc: Fix assert-crash if server doesn't send EXISTS reply to SELECT

Fixes:
Panic: file imapc-sync.c: line 477 (imapc_sync_index): assertion failed: (mbox->sync_fetch_first_uid == 1)


  Commit: c8be24bae38360d192ae52a5bba9b3b6aadd499c
      https://github.com/dovecot/core/commit/c8be24bae38360d192ae52a5bba9b3b6aadd499c
  Author: Timo Sirainen <timo.sirainen at dovecot.fi>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/lib-storage/index/imapc/imapc-mailbox.c
    M src/lib-storage/index/imapc/imapc-storage.c

  Log Message:
  -----------
  imapc: Make sure a valid UIDVALIDITY is returned by SELECT

Fixes errors such as:
Error: Synchronization corrupted index header (in-memory index): uidvalidity=0, but next_uid=9


Compare: https://github.com/dovecot/core/compare/5fbdfc545f19...c8be24bae383


More information about the dovecot-cvs mailing list