1. 19 Dec, 2014 1 commit
    • Jim Nelson's avatar
      Periodic database & attachments garbage collection: Bug #714134 · 23511dc3
      Jim Nelson authored
      See the ticket (comment #2) for more information on the thinking and
      strategy here, but in a nutshell this will remove from the Geary
      database all emails no longer accessible via any folder and not seen
      on the server in over 30 days.  It also deletes those messages
      attachment(s) and removes any empty directories in the attachment/
      directory to prevent clutter.  If enough messages are garbage
      collected, Geary will vacuum the database at startup, which will
      lower its disk footprint and reduce fragmentation, potentially
      increasing performance.
  2. 16 Dec, 2014 1 commit
    • Jim Nelson's avatar
      Improved search experience: Bug #720361 · 533ab75e
      Jim Nelson authored
      This introduces a new full-text search algorithm that attempts to
      curb the effects of overstemming in the Porter Snowball stemmer.
      The FTS table will be regenerated with this update.
      The crux of this new algorithm is a configurable heuristic that
      reduces stemmed matching.  The configuration is not available via the
      UI (I suspect it will only confuse users) but can be changed by power
      users via GSettings.  More information is available at:
  3. 03 Dec, 2014 1 commit
  4. 02 Dec, 2014 1 commit
    • Mark Pariente's avatar
      Geary window does not open due to race condition: Bug #737811 · b22682d2
      Mark Pariente authored
      Although prior fix for bug #737811 solved problem for some users,
      apparently Geary still had an issue when upgrading a database with
      new GLib Mutex implementation, which uses Linux's futexes whenever
      available.  This solution gives the notifying thread a chance to
      signal the waiter that its work is completed.
  5. 14 Nov, 2014 2 commits
  6. 13 Nov, 2014 1 commit
  7. 12 Nov, 2014 1 commit
    • Jim Nelson's avatar
      Return to IDLE properly when connection lulls · 2095ae95
      Jim Nelson authored
      Commit 96aaf3 fixed a bug with regard to IDLE status responses being
      improperly reported to ClientSession.  As it turned out, that fix
      introduced a bug by not properly decrementing outstanding_cmds, which
      left the ClientConnection in a state where it would never enter IDLE
      The problem is a change I pondered at the time but didn't commit due
      to that fix being so close to release time: not reporting the original
      IDLE command to ClientSession either.  That in itself is harmless, but
      not doing that also avoids incrementing outstanding_cmds for that
      command, meaning when the IDLE completes that value returns to zero
      and the ClientConnection is in an appropriate state to return to IDLE
      when ready.
  8. 11 Nov, 2014 1 commit
  9. 05 Nov, 2014 1 commit
    • Jim Nelson's avatar
      Don't assert() if Imap.Folder created w/ mismatched name: Bug #739316 · 74a76eb0
      Jim Nelson authored
      The assertion was a sanity check that's outlived its original purpose.
      When it triggers now, it means an internationalization/encoding issue,
      usually with non-Gmail servers that implement XLIST.  Rather than
      assert and make Geary unusuable for a subset of our non-English
      speaking users, log a message and continue.
  10. 04 Nov, 2014 2 commits
    • mar-v-in's avatar
      Specify "Reply-To:" in composer fields: Bug #714588 · 108d0abe
      mar-v-in authored
      This also closes bug #713808, as lesser-used fields (Reply-To, Bcc)
      are hidden unless the user expands the composer to show them.  Right
      now that is an option in the composer's toolbar menu; that may change
      in the future if we can find the right place to put the widgetry.
    • Jim Nelson's avatar
      Stricter naming and controls on converting string data to ASCII · 2c0e2955
      Jim Nelson authored
      This is the result of the recent fix for Turkish locale users.  That
      patch was sufficient to solve their issue, but this patch is more
      thorough in naming to ensure in the future it's understood that the
      IMAP StringParameter objects deal in ASCII, not UTF-8.  If a string
      cannot be converted into a StringParameter (must be represented by a
      LiteralParameter), that is now also enforced via an ImapError.
  11. 01 Nov, 2014 3 commits
    • Jim Nelson's avatar
      Drop NULs and process entire IMAP line · c7b3771c
      Jim Nelson authored
      Discovered while working on Turkish UTF-8 bug, technically the IMAP
      Deserializer was missing two things: (a) NUL is never allowed in an
      IMAP line, even if the string is quoted, and so it should be dropped
      rather than processed and cause potential issues, and (b)
      DataInputStream will read to EOL, potentially leaving embedded NULs in
      the line, meaning the old code would stop without processing the
      entire IMAP response.
      Although no server has been reported with these issues, I felt it
      important to get this right as a defensive measure.
    • Jim Nelson's avatar
      Removed unused code, symbols · e96a8db4
      Jim Nelson authored
    • Jim Nelson's avatar
      Build with Vala 0.22.1 (ASCII string binding issue): Bug #739470 · 4a0c3e11
      Jim Nelson authored
      ASCII strup/strdown not bound in Vala 0.22 or 0.24, so need to use
      externs to import those symbols until Vala 0.26 is the minimum
  12. 31 Oct, 2014 1 commit
    • Jim Nelson's avatar
      Correct problems with IMAP parsing when using Turkish: Bug #714892 · bc0a892a
      Jim Nelson authored
      When connecting to any IMAP server while the local user's locale is
      configured to be Turkish, Geary will mis-parse many of the IMAP
      server's responses, leading to essentially a failed connection due to
      state issues and more.
      The problem is that some of the parsing code was using g_utf8_strdown
      to convert received text to lowercase to perform case-insensitive
      string comparisons.  Turkish has multiple letter I's (dotted and
      dotless), and when the UTF-8 code transformed it to lowercase, a
      different UTF-8 code point was selected than the English/ASCII 'i'.
      The solution is to explicitly use ASCII variants of string
      transformation, comparison, and hashing to ensure 7-bit operations are
      used throughout the IMAP and RFC822 stack.  Further commits will
      follow that enforce this a bit more, but this commit is sufficient to
      correct the problem for our Turkish users.
  13. 28 Oct, 2014 1 commit
    • Jim Nelson's avatar
      Password dialog always has transient parent: Bug #720769 · 0da67cb2
      Jim Nelson authored
      Not only a transient parent, but the main window is shown and
      presented if hidden to ensure everything is displayed.  This ensures
      the password prompt is associated with Geary, answering some of the
      concerns in bug #739195.
  14. 24 Oct, 2014 5 commits
  15. 23 Oct, 2014 2 commits
  16. 21 Oct, 2014 1 commit
  17. 10 Oct, 2014 2 commits
    • Jim Nelson's avatar
      Support multiple Message-IDs with In-Reply-To · 15cac889
      Jim Nelson authored
      Prior RFC822 code treated In-Reply-To as only capable of listing a
      single Message-ID parent.  The spec does allow for multiple parent
      messages, so this change reflects that.
      This potentially can also fix bugs where messages were not included
      in conversations, but this would be an edge case, as that would
      require the MUA not listing the In-Reply-To Message-IDs in the
      References list, which Geary does properly parse.
    • Jim Nelson's avatar
      Better Message-ID and Message-ID list parsing · 86d319fb
      Jim Nelson authored
      Discovered some messages that were not being incorporated into their
      conversations properly due to their Message-IDs not being bracketed.
      This change makes the parsing a bit more liberal when parsing but
      stricter when stored in memory to ensure that hash() and equal_to()
      work every time.
  18. 08 Oct, 2014 2 commits
  19. 26 Sep, 2014 1 commit
    • Jim Nelson's avatar
      Fix dtor names, empty if block · 8867ed00
      Jim Nelson authored
      Latest build of Vala catches these.  if block is a logic change, but
      harmless as (a) it fixes a bug that (b) is never exercised by the
      application, as it does not logout of IMAP sessions.
  20. 19 Sep, 2014 1 commit
    • Jim Nelson's avatar
      Tighten up parent refs in ListParameters · 513c6d8c
      Jim Nelson authored
      While working on another bug, I discovered some issues with the
      maintenance of parent references for IMAP Parameters being held in
      ListParameters (of which every Parameter is held).  This patch not
      only tightens up references, it also verifies references are accurate
      when the ListParameter is destroyed.
  21. 02 Sep, 2014 4 commits
    • Jim Nelson's avatar
      Reduce database lags: Bug #725929 · 017d5e6c
      Jim Nelson authored
      This reduces lags by searching for incomplete emails in slices as
      well as in separate database transactions.
      This is a refinement of commit 6672f8, where the database was
      searched in slices but in one transaction.  This didn't completely
      solve the db lags in this code path.
    • Jim Nelson's avatar
      Use NORMAL SQLite synchronous mode · 450d45dc
      Jim Nelson authored
      With the database improvements over this cycle, testing shows
      that we can now switch to NORMAL synchronous mode with little to
      no performance loss but better database safety.
    • Jim Nelson's avatar
    • Jim Nelson's avatar
      Don't signal ClientConnection IDLE StatusResponses · 96aaf32e
      Jim Nelson authored
      This fixes a subtle bug in the IMAP stack.  The most prominent symptom
      was for the entire folder list to clear after running Geary for a day
      or so.  Smaller symptoms were less noticeable, but could include dropped
      incoming messages (which would be picked up later when Geary was restarted
      or the connection was dropped and reestablished).
      The essential problem is that ClientConnection generates internal
      IDLE commands to control data flow and to receive unsolicited
      server data.  It would always signal the corresponding IDLE responses
      from the server.  These were being stored in the ClientSession object
      as "finished commands" for commands it did not issue, leading to the
      internal IDLE tag being kept around in a hash map.  When the tag
      numbering rolled over (which could take 8 - 12 hours depending on the
      connection) the ClientSession would complete new commands with those
      leftover tags instantly, causing for results to be dropped and the
      session state machine to be out of sync with the server.
      The solution is simply not to report status responses for internal
      IDLE commands.
  22. 29 Aug, 2014 1 commit
    • Jim Nelson's avatar
      Present user with dialog when TLS cert warnings detected: Bug #713247 · 80912869
      Jim Nelson authored
      When a TLS certificate warning is detected, the user will now be
      presented with a warning dialog presenting them with three options:
      Trust This Server, Always Trust This Server, and Don't Trust This
      Server (the default).  The user must select one of the first two
      buttons for Geary to continue connecting to the server, otherwise it
      will close the Account object for the duration of the application
      This patch introduces a dependency on gcr-3, which is used to pin TLS
      certificates (i.e. persist the user's choice of ignoring the TLS
  23. 22 Aug, 2014 1 commit
  24. 21 Aug, 2014 1 commit
  25. 19 Aug, 2014 1 commit
  26. 14 Aug, 2014 1 commit
    • Jim Nelson's avatar
      Update ClientConnection state machine inside mutex · eb1b9971
      Jim Nelson authored
      While looking at a user's network log I spotted a server error related
      to how Geary drops from the IMAP connection's IDLE state.  There was a
      timing hole where a command could be issued while a flush followed by
      an IDLE was issued.  Without updating the FSM, the new command would
      be queued without issuing a DONE to end IDLE.