1. 11 Nov, 2017 3 commits
  2. 10 Nov, 2017 1 commit
  3. 09 Nov, 2017 1 commit
  4. 08 Nov, 2017 2 commits
    • David Wilson's avatar
      Use fgets_unlocked and fgetc_unlocked if available. · 829db35b
      David Wilson authored
      Since mutt does not use threads, there is no reason it should use the
      locked variants of the FILE* IO functions. This checks if the unlocked
      functions are available, and if so enables them globally via mutt.h.
      
      Cuts load time for a 56k message, 1.8GB /var/mail mailbox from 14
      seconds to ~6 seconds, since we avoid acquiring and releasing a mutex
      for every character of input read.
      
      Before: 0m14.376s
      
          74.98%          mutt  libc-2.18.so        [.] _IO_getc
          11.87%          mutt  mutt                [.] mbox_parse_mailbox
           0.94%          mutt  [kernel.kallsyms]   [k] copy_user_generic_string
           0.83%          mutt  libc-2.18.so        [.] __strchr_sse2
           0.53%          mutt  libc-2.18.so        [.] __memcpy_sse2
           0.44%          mutt  libc-2.18.so        [.] _int_malloc
      
      After: 6 seconds
      
          68.92%     mutt  mutt                  [.] mbox_parse_mailbox
           2.25%     mutt  [kernel.kallsyms]     [k] copy_user_generic_string
           1.73%     mutt  libc-2.18.so          [.] __strchr_sse2
           1.24%     mutt  libc-2.18.so          [.] __memcpy_sse2
           1.17%     mutt  libc-2.18.so          [.] _int_malloc
           0.87%     mutt  libc-2.18.so          [.] __strspn_sse42
      829db35b
    • Kevin J. McCarthy's avatar
      Note which ssl config vars are GnuTLS or OpenSSL only. (closes #3781) · d2262ccb
      Kevin J. McCarthy authored
      It was not obvious that the ssl_ca_certificates_file was only for
      GnuTLS, or that the ssl_usesystemcerts was only for OpenSSL.
      d2262ccb
  5. 15 Oct, 2017 1 commit
  6. 01 Oct, 2017 2 commits
  7. 28 Sep, 2017 1 commit
    • Roger Pau Monne's avatar
      Enable $reply_self for group-reply, even with $metoo unset. · cfcd8787
      Roger Pau Monne authored
      For a (r)eply, the $metoo variable does not have any effect because
      there is a single recipient.
      
      However with (g)roup reply, the To was initially set to the sender,
      but subsequently removed my $nometoo.  The empty To line is then
      replaced with the Cc line, resulting in a (logically correct but)
      surprising outcome.
      
      Change the behavior such that $nometoo will not strip a single To
      recipient when $reply_self is set.
      cfcd8787
  8. 27 Sep, 2017 3 commits
    • Kevin J. McCarthy's avatar
      Make cmd_parse_fetch() more precise about setting reopen/check flags. · 285baf9a
      Kevin J. McCarthy authored
      Previously any FETCH with FLAGS would result in either
        idata->reopen |= IMAP_EXPUNGE_PENDING;
        -or-
        idata->check_status = IMAP_FLAGS_PENDING;
      being set.
      
      This is unnecessary in the case of responses to FLAGS.SILENT updates
      sent by mutt (which seem to commonly happen now-a-days).
      
      Change imap_set_flags() to compare the old server flags against the
      new ones, and report when _those_ updates would/did result in a local
      header flag change.  Only set one of the reopen/check_status flags in
      the event of an actual change (or potential change if a local change
      has been made to the header.)
      285baf9a
    • Kevin J. McCarthy's avatar
      merge stable · 1099795d
      Kevin J. McCarthy authored
      1099795d
    • Kevin J. McCarthy's avatar
      Fix uses of context->changed as a counter. · 0bcb77a6
      Kevin J. McCarthy authored
      The first was in mx_update_tables(), but only when "not committing".
      This is used by mh/maildir during an "occult" update, and in imap when
      expunging the mailbox.  It meant to simply turn on changed when a
      single changed header is seen.
      
      The second use was in imap_sync_message_for_copy().  Previously this
      was used for a server side copy/save, but is now also used for
      fast-trash copying.  Remove the code that was trying to decrement the
      counter: this function is not capable of properly setting a status
      bit.
      0bcb77a6
  9. 26 Sep, 2017 1 commit
  10. 23 Sep, 2017 4 commits
  11. 22 Sep, 2017 5 commits
    • Kevin J. McCarthy's avatar
      merge stable · fa79d68e
      Kevin J. McCarthy authored
      fa79d68e
    • Kevin J. McCarthy's avatar
      Add missing IMAP_CMD_POLL flag in imap buffy check. · 4c961065
      Kevin J. McCarthy authored
      I missed adding the flag to one of the imap_exec() calls inside the
      loop, when a different server is encountered in the mailboxes list.
      4c961065
    • Kevin J. McCarthy's avatar
      Close the imap socket for the selected mailbox on error. · 1eab7774
      Kevin J. McCarthy authored
      The new $imap_poll_timeout calls the cmd_handle_fatal() error handler
      on timeout, which is supposed to close and cleanup.
      
      However, for the currently selected mailbox, the error handler was not
      closing the socket after closing up the mailbox.  This left extra
      SSL/GnuTLS data around and was causing errors on an attempt to
      reconnect.
      
      Thanks to Fabian Groffen for reporting the issue.
      1eab7774
    • Kevin J. McCarthy's avatar
      Fix imap sync segfault due to inactive headers during an expunge. (closes #3971) · a4dbae76
      Kevin J. McCarthy authored
      Mutt has several places where it turns off h->active as a hack.  For
      example to avoid FLAG updates, or to exclude from imap_exec_msgset.
      
      Unfortunately, when a reopen is allowed and the IMAP_EXPUNGE_PENDING
      flag becomes set (e.g. a flag update to a modified header),
      imap_expunge_mailbox() will be called by imap_cmd_finish().
      
      The mx_update_tables() would free and remove these "inactive" headers,
      despite that an EXPUNGE was not received for them.  This would result
      in memory leaks and segfaults due to dangling pointers in the
      msn_index and uid_hash.
      
      There should probably be a more elegant solution, removing the initial
      hacks.  However, this is causing a segfault, and the best solution
      right now is to turn active back on for non-expunged messages in
      imap_expunge_mailbox().
      
      Extra thanks to chdiza, who bravely runs tip and found this issue
      quickly.
      a4dbae76
    • Vincent Lefevre's avatar
      Updated French translation. · 83d23fd9
      Vincent Lefevre authored
      83d23fd9
  12. 20 Sep, 2017 1 commit
  13. 14 Sep, 2017 2 commits
  14. 13 Sep, 2017 3 commits
    • Kevin J. McCarthy's avatar
      merge stable · baffaa68
      Kevin J. McCarthy authored
      baffaa68
    • Kevin J. McCarthy's avatar
      Change imap copy/save and trash to sync flags, excluding deleted. (closes #3966) (closes #3860) · 19a17aae
      Kevin J. McCarthy authored
      imap_copy_messages() uses a helper to sync the flags before performing
      a server-side copy.  However, it had a bug that the "deleted" flag on
      a local message, if set, will be propagated to the copy too.
      
      Change the copy sync helper to ignore the deleted flag.  Then, change
      the imap trash function to use the same helper.
      
      Thanks to Anton Lindqvist for his excellent bug report, suggested
      fixes, and help testing.
      19a17aae
    • Kevin J. McCarthy's avatar
      Remove \Seen flag setting for imap trash. (see #3966) (see #3860) · 0139a67d
      Kevin J. McCarthy authored
      Commit 323e3d6e5e4c has a side effect where spurious FETCH flag
      updates after setting the \Seen flag can cause a sync to abort.
      
      Remove manually setting \Seen for all trashed message before copying.
      
      The next commit will change the imap trash function to use the same
      code as the imap copy/save function for syncing the message before
      server-side copying.
      0139a67d
  15. 05 Sep, 2017 1 commit
  16. 04 Sep, 2017 6 commits
  17. 02 Sep, 2017 3 commits