1. 05 Feb, 2014 1 commit
  2. 03 Feb, 2014 6 commits
    • Jim Nelson's avatar
      Reduce local delays when new message arrives · 6833f1ea
      Jim Nelson authored
      In particular, bug #713493 reports this, although this patch doesn't
      appear to solve the problem entirely.  However, I have spotted
      situations in the past where the Append replay operation caused local
      operations to hang.  This is because Append was being treated as a
      local operation when, in fact, it's first call is back to the server
      to fetch UIDs of the new messages.  Hence, it should be treated as
      a remote operation so local operations can run without delay.
    • Jim Nelson's avatar
      Allow flag watching while synchronizing folder in background · a9185461
      Jim Nelson authored
      Previously, synchronizing folders caused a jump in CPU, so work was
      done to minimize activity.  Optimizations to folder normalization
      has reduced the CPU load, so it's okay now to allow flag watching
      while the background folder is open.
      This is not a substitute for an architected solution: periodic
      flag synchronization with folders, not merely when changes in contents
      (additions/removals) are detected, but this helps some, especially
      with high-traffic folders.
    • Jim Nelson's avatar
      Further work fixing connection reestablishment logic · 70aafd75
      Jim Nelson authored
      More testing of previous changes located two other problems that
      this patch fixes.
      First, if a connection reestablishment was attempted but the reconnect
      failed initially (common if the server is simply unavailable, i.e.
      recent Gmail outage) the reestablishment logic halts.  This patch
      forces another attempt.
      Second, the back-off delay that used to be present in the
      conversation monitor (when it handled reestablishment) was missing
      in the new code.  This adds it back.
    • Jim Nelson's avatar
      Fix bug in reestablishment logic intro'd in commit 86f1854e · ab7ede3e
      Jim Nelson authored
      One bug in that commit was that only one of two the two conditionals
      for entering connection reestablishment was considered when
      determining if the Folder should close.  This change now uses both
      conditionals.  Without this, it's possible for the remote to fail
      to open due to connection error and the Folder to remain open although
      reestablishment doesn't occur because there's no remote folder to
      establish with.
    • Jim Nelson's avatar
      Better IDLE state handling · 182fb0a9
      Jim Nelson authored
      OpenMailbox.org doesn't complete transactions when the IDLE state
      is entered while commands are outstanding.  One thing I've considered
      for a while is only issuing IDLE when no comands are outstanding,
      as in some situations the connection state "thrashes" if commands
      come in back-to-back.  This commit does just that, only entering
      IDLE when no commands are outstanding.
    • Jim Nelson's avatar
      Add LIST RETURN functionality · 7f535b02
      Jim Nelson authored
      SPECIAL-USE does not have to return special-use flags, but the
      LIST RETURN syntax can force it, which we want.
  3. 30 Jan, 2014 2 commits
    • Charles Lindsay's avatar
      Add Geary.iterate to replace Collection.SingleItem · 3af6837e
      Charles Lindsay authored
      This adds a way to turn lists of items into a Geary.Iterable, which then
      allows you to dump results into any kind of container.  This removes the
      Collection.SingleItem class, which was no longer useful.
      Closes: bgo #723208
    • Charles Lindsay's avatar
      Add option to save sent mail · cce04b81
      Charles Lindsay authored
      This adds the ability for Geary to push sent mail up to the account's
      Sent Mail folder (if available).  There's an accompanying account option
      that defaults to on (meaning: push sent mail).
      The current implementation will leave messages in the Outbox (though
      they won't be sent again) if they fail to be pushed to Sent Mail.  This
      isn't the best solution, but it at least means you have a way of seeing
      the problem and hopefully copying the data elsewhere manually if you
      need to save it.
      Note that Geary might not always recognize an account's Sent Mail
      folder.  This is the case for any "Other" accounts that don't support
      the "special use" or "xlist" IMAP extensions.  In this case, Geary will
      either throw an error and leave messages in the Outbox, or erase the
      message from the Outbox when it's sent, depending on the value of the
      account's save sent mail option.  Better support for detecting the Sent
      Mail folder in every case is coming soon.
      Closes: bgo #713263
  4. 29 Jan, 2014 4 commits
  5. 20 Jan, 2014 1 commit
    • Jim Nelson's avatar
      Unable to authenticate SMTP credentials: Closes bgo#721570 · 3ba75dac
      Jim Nelson authored
      User's server was returning a status code that indicates an invalid
      password, when in fact it was simply indicating that it didn't
      support the AUTH type (even though it advertised it in its connect
      capabilities).  This removes the error-checking by SMTP value and
      simply attempts all chosed AUTH types.
  6. 18 Jan, 2014 1 commit
    • Jim Nelson's avatar
      Load local msgs and display new msgs more quickly: Closes bgo#713432 · af10a76b
      Jim Nelson authored
      This patch is a grab-bag of fixes to get mail onto the screen faster
      and report new mail waiting on the server more quickly.
      In a nutshell:
        * Adds a NO_DELAY flag to Folder.open_async which indicates that
          background remote connections should initiate ASAP rather than
          wait for a local request that requires remote information.
        * Reduce creation of ImapDB.Folders (which, previously, were
          generated as though "cheap"), which means caching server
          information.  ImapDB now relies on ImapEngine to refresh that
          information on its own.
        * The background search table update is delayed to allow startup
          database tasks priority.
        * Rather than delay selection of a folder 100ms to prevent the user
          from holding down a key or clicking madly, the initial selection
          goes right through, but subsequent ones are delayed.  This may
          also help resolve bug #713468.
        * And the big one: ImapEngine.Account doesn't load local and remote
          folders in parallel at startup, but rather local first, reports
          them to the user, and then loads the remote and pairs the two.
          This gets the UI up and going much more quickly.
  7. 15 Jan, 2014 1 commit
  8. 13 Jan, 2014 1 commit
    • Jim Nelson's avatar
      Revised handling of append/remove upcalls: Closes bgno#721326 · bd83b8bc
      Jim Nelson authored
      This approach immediately updates the remote_count when an upcall
      is received, as that math is important for determining positional
      addressing if another one immediately follows it.  However, the
      async calls only deal in the remote count *at the time the upcall
      arrived*, in effect allowing for the upcall to be serially processed
      using async blocking calls.
  9. 10 Jan, 2014 1 commit
  10. 07 Jan, 2014 2 commits
    • Charles Lindsay's avatar
      Add separate trash/archive/delete buttons · 968743ac
      Charles Lindsay authored
      Archive shows up as its own button for any account that supports
      archiving (currently only Gmail).  Trash or delete shows up as one
      button, depending on what the folder supports and whether you've got the
      shift key held down.  Future work will extend supporting archive to
      other account types and getting the trash special folder recognized in
      more accounts.
      Closes: bgo #714212
    • Charles Lindsay's avatar
      Copy array manually to work around vala bug · 2a17ab0e
      Charles Lindsay authored
      Closes: bgo #720703
  11. 17 Dec, 2013 1 commit
  12. 13 Dec, 2013 1 commit
  13. 12 Dec, 2013 1 commit
    • Charles Lindsay's avatar
      Add API to make juggling Gee collections easier · 62af03e5
      Charles Lindsay authored
      This adds a simple Iterable class that lets us take advantage of Gee's
      Traversable interface much more easily.  Traversable is great, but
      every operation returns an Iterator, which makes it awkward to use
      outside of Traversable.  The new Iterable wraps the Traversable
      Iterators and methods so you can directly use the result.  It also gives
      us a convenient point to add convenience methods in the future.
      I've gone through a few arbitrary places in the code to see how the
      class might be used, and changed some obvious places to (hopefully) the
      equivalent code using the new Iterable class.  More work could be done
      here, but the real benefit is simply having the Iterable class around to
      be able to use in new code.
  14. 26 Nov, 2013 1 commit
    • Jim Nelson's avatar
      Handle reconnects inside of ImapEngine.GenericFolder · 1a48ccc5
      Jim Nelson authored
      For historical reasons, reestablishing connections when a folder's
      session died was handled inside of ConversationMonitor.  This broke
      at some point and Geary failed to reconnect when the session dropped.
      This patch puts this logic into ImapEngine.GenericFolder, where it
      belongs, as well as fixes a problem in ClientSession that caused
      issues when the session was closed by the server (via a BYE response).
      This patch fixes bug #713609 and bug #714532.  I also believe this
      fixes bug #713078.  Additionally, with the reconnect logic now in
      GenericFolder, bug #714671 is solved.
  15. 16 Nov, 2013 1 commit
    • Jim Nelson's avatar
      Convert all MIME handling to Engine classes: Closes #6530 · e29a9c80
      Jim Nelson authored
      We've had numerous bugs due to improper MIME comparisons and dealing
      with Content-Type and Content-Disposition (or their lack of presence
      in a message).  Now the Engine offers MIME classes that better deal
      with these issues without exporting the GMime structures, which
      are not as easy to manage and don't offer some of the things that
      have bitten us in the past (such as case-insensitive comparisons).
  16. 08 Nov, 2013 1 commit
    • Jim Nelson's avatar
      Don't use non-wildcarded form of LIST command: Closes #7624 · 0aae79f2
      Jim Nelson authored
      With IceWarp IMAP server, the non-wildcarded form of LIST that
      Geary was some times using was causing the Spam folder to return
      a different name, triggering an assertion in Geary.  This patch
      works around that problem using an internal cache of folder names
      and attributes, which is something we should've been doing anyway.
  17. 02 Nov, 2013 1 commit
  18. 30 Oct, 2013 2 commits
  19. 25 Oct, 2013 1 commit
    • Jim Nelson's avatar
      Crash when connection denied or times out: Closes #7634 · 2401e005
      Jim Nelson authored
      Previously ClientSession.connect_async() could leave the object in
      a LOGGED_OUT state if the connection was denied by the server or
      a timeout occurred when connecting.  This was bad because that
      state indicates that the underlying connection may still be active
      and needs an async close to occur.  Now connect_async() guarantees
      that the connection is closed/disconnected/dead if it throws an
  20. 13 Oct, 2013 1 commit
  21. 03 Oct, 2013 1 commit
  22. 02 Oct, 2013 2 commits
  23. 01 Oct, 2013 3 commits
  24. 28 Sep, 2013 2 commits
  25. 27 Sep, 2013 1 commit
    • Jim Nelson's avatar
      Message removed before connect reappears then disappears: Closes #7465 · 37b27e92
      Jim Nelson authored
      Problem was introduced when persistent remove markers in ImapDB.Folder
      were reintroduced.
      Also fixes issue where removing a message before connect doesn't
      have immediate response.  Conversation Monitor changed to use
      LOCAL_ONLY listing when doing a Fill Window prior to the folder
      being remote-opened.