Commit graph

1868 commits

Author SHA1 Message Date
Jim Nelson
017d5e6cdf Reduce database lags: Bug #725929
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.
2014-09-02 13:49:26 -07:00
Jim Nelson
450d45dc6a Use NORMAL SQLite synchronous mode
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.
2014-09-01 21:54:54 -07:00
Jim Nelson
b8910bf572 Improved debugging and appropriate Error in Imap.Account 2014-09-01 21:53:50 -07:00
Jim Nelson
96aaf32e3b Don't signal ClientConnection IDLE StatusResponses
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.
2014-09-01 21:48:19 -07:00
Robert Schroll
9f37ef720f Check for inline composers before archive or trash
https://bugzilla.gnome.org/show_bug.cgi?id=733340
2014-08-31 23:33:57 -04:00
Robert Schroll
44d6e2a4dd Check for inline compositions before switching conversation from notification
https://bugzilla.gnome.org/show_bug.cgi?id=733430
2014-08-31 23:33:57 -04:00
Robert Schroll
c36ff017e6 New scrolling system for inline composers
The editor in the composer no longer shows its own scrollbar.  Instead,
the conversation view allocates enough space to hold the composer
without any scrolling.  The composer then positions and scrolls itself
to create the illusion that the outer scroll bar controls it.

To track the size of the composer, we put all the text in a div and mark
that as contenteditable.  Then, when the div changes height, we update
the layout.  We use the user_changed_contents signal as a proxy for
this.

https://bugzilla.gnome.org/show_bug.cgi?id=730955
2014-08-31 23:33:57 -04:00
Daniel Șerbănescu
1a2f693e43 Updated Romanian Translation 2014-08-31 12:52:54 +02:00
Piotr Drąg
2f220b3615 Updated Polish translation 2014-08-30 02:53:55 +02:00
Daniel Korostil
f6b47920a8 Updated Ukrainian translation 2014-08-30 01:06:37 +03:00
Yosef Or Boczko
06aa805edb Updated Hebrew translation 2014-08-29 05:44:13 +03:00
Jim Nelson
809128692c Present user with dialog when TLS cert warnings detected: Bug #713247
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
session.

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
warnings).
2014-08-28 17:27:50 -07:00
Jim Nelson
0e5c334308 Exit application when welcome dialog is closed: Bug #713961 2014-08-28 14:31:15 -07:00
Rafael Ferreira
210e443c8e Updated Brazilian Portuguese translation 2014-08-27 11:28:57 +00:00
Daniel Mustieles
426f276b06 Updated Spanish translation 2014-08-26 18:48:06 +02:00
Marek Černocký
f739ef2566 Updated Czech translation 2014-08-26 12:07:17 +02:00
Marek Černocký
530b6df3bf Updated Czech translation 2014-08-26 11:51:22 +02:00
Hannie Dumoleyn
6d2e638a58 Update Dutch translation Master 2014-08-23 12:28:16 +02:00
Jim Nelson
6672f896f1 Search for incomplete messages in chunks: Bug #725929
This reduces one source of database pauses by searching for incomplete
messages in chunks (rather than pull in all the messages in one go).
2014-08-22 16:02:29 -07:00
Jim Nelson
9ff96a107b Remove extraneous references to old DBus service exec 2014-08-22 13:56:21 -07:00
Jim Nelson
adf93d4ef7 Updated debian/control file
While debugging a problem with our PPA discovered a couple of
unnecessary conditions in our dependencies.
2014-08-22 13:54:52 -07:00
Jim Nelson
67a5a9f7fc Fix set_default_icon_list() ownership transfer bug
Ownership of the GList is transferred in this call, so a copy should
be passed instead.  This will be fixed in a future version of Vala.

https://mail.gnome.org/archives/vala-list/2014-August/msg00022.html
2014-08-21 13:42:00 -07:00
Simon Lipp
8ce52b5924 Use email address rather than username in keyring: Bug #714689
Since different email accounts can have the same username, use the
full email address for the keyring to prevent collisions.  This patch
will also migrate both username-based keys and the very early one-pw
keys (from 0.1).
2014-08-21 12:42:38 -07:00
Jim Nelson
eecc6ca854 Update to 0.7.1 2014-08-20 12:53:01 -07:00
Jim Nelson
93ef41a9d7 Incorrect version number in debian/changelog 2014-08-20 12:40:40 -07:00
Jim Nelson
9bcfbfed24 Avoid excessive IMAP cmd length with max. MessageSet size: Bug #734757
When building sparse MessageSets, instead of constructing single one
it's possible for multiple to be returned, indicating that the number
of values exceeds a defined limit.  This may require multiple I/Os to
complete all commands, although they can be pipelined.
2014-08-19 13:35:05 -07:00
Yosef Or Boczko
9945c5ae7a Updated Hebrew translation 2014-08-19 23:26:40 +03:00
Marek Černocký
f95e282e6a Updated Czech translation 2014-08-16 13:32:39 +02:00
Jim Nelson
eb1b9971d6 Update ClientConnection state machine inside mutex
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.
2014-08-13 18:07:28 -07:00
Jim Nelson
b72b640d70 Only report Inbox deselected if Inbox is being removed: Bug #727744
Changing a specal folder type involves adding and removing the folder
entry in the folder sidebar.  Prior logic would look in the Inboxes
branch if the entry was not selected in the "normal" account branch
but not verify the folder in Inboxes was the one being removed.  This
triggered an unwarranted "nothing selected" signal that caused the
conversation list to go blank at startup when Geary was associating
special folder types with folders.

Note that you must have multiple accounts registered w/ Geary to
trigger this bug.
2014-08-13 15:22:50 -07:00
Jim Nelson
58c7a4b6d2 Include new .sql file in installation. 2014-08-13 12:20:05 -07:00
Jim Nelson
2f94199105 Prevent Geary from being listed twice in Default Applications
The autostart .desktop file shouldn't have a MIME type association,
otherwise it will make Geary appear twice in the drop-down list of
email applications.
2014-08-13 12:17:25 -07:00
Robert Schroll
8ab89a6356 Escape the CID when searching as well
Also, add a debug statement, since no match results in an null element,
not an error.
2014-08-12 14:26:16 -07:00
Jim Nelson
64fdb80f4b Encode Content-ID before inserting into HTML
Also, watch for null when fetching node from the DOM.
2014-08-12 14:26:03 -07:00
Robert Schroll
787d572e22 Remove inline images that are included by Content-ID reference 2014-08-12 14:25:48 -07:00
Jim Nelson
a9db6e8c44 Show attachments lacking a Content-Disposition: Bug #713830
Attachments without Content-Disposition are now generated and shown
in the client.  This requires a database upgrade as well as rescanning
all messages to generate the previously missing attachments.

In addition, this upgrade now stores the attachments' Content-ID in
the database.  This makes it much easier for the client to associate
a particular MIME section in the RFC822 message with an attachment in
the database and on disk.
2014-08-12 14:22:57 -07:00
Jim Nelson
a335616741 Update .doap, README file 2014-08-08 13:29:43 -07:00
Jim Nelson
2bdd67c093 Improved disconnection/reestablish logic: Bug #733544
This code fixes a couple of corner cases discovered by a user and
myself regarding connection drops and reestablishment.

1. When BYE received from the server, begin disconnecting immediately.
Otherwise it's possible for the server to send a BYE and drop the cx
ungracefully (or the FCLOSE is never received) and leave the
ClientSession active.  By disconnecting immediately, Geary can cleanly
break the session and immediately reestablish another one.

2. Remove the DISCONNECTING state from ClientSession.  There was an
asymmetry in the state machine with regards to how local disconnects
were handled (and exposed by #1).  Analysis showed that the
DISCONNECTING state was unnecessary since there was no need to wait
for events to come back from the ClientConenction.  Now the FSM
transitions straight to BROKEN when disconnecting.

3. Flushing pending commands in the replay queue was being determined
by the remote close reason.  This is insufficient in the case of BYE
because it's a non-error close but, because it's initiated by the
server, pending commands should not be flushed.  An additional close
flag deals with this case.
2014-08-07 16:20:44 -07:00
Piotr Drąg
d932e7c31f Updated Polish translation 2014-08-05 21:48:25 +02:00
Jim Nelson
0cd85446fa Use "dim-label" style and remove colons in composer
Use new GNOME style guidelines in composer widget.
2014-08-04 13:46:18 -07:00
Jim Nelson
37253c08bf Better Message-ID parsing
While going through a database upgrade, I noticed (once again) debug
messages reporting bad Message-IDs in messages.  On closer inspection,
now see that our parser was tripping on Message-IDs with spaces inside
the brackets.  Need to allow this, so this new algorithm deals with
that.
2014-07-30 19:08:36 -07:00
Jim Nelson
f1c75fc465 Patch major memory leak due to GMime bindings
Discovered a few binding problems while working on another issue,
in particular gmime_parser_construct_message()'s return object
not being freed, which can hold an entire message (attachments and
all) in memory.
2014-07-30 19:02:11 -07:00
Jim Nelson
9933f2d3fe Stabilize sort of search email identifiers: Bug #733271
Without stabilization, it was possible for multiple emails in search
results with the same INTERNALDATE to be dropped due to the equality.
2014-07-25 13:36:09 -07:00
Jim Nelson
1398cccfb1 Use quoted RFC822 string when autocompleting address: Bug #714956
Autocomplete now uses a properly-quoted RFC822 string when an address
is selected from the drop-down list.  This resolves the most egregious
case of the composer not accepting an email address formatted
[Last, First <mailbox@host>], as autocomplete is heavily relied-upon
and  Geary is presenting an address that can't be used, which is
confusing.

It's still possible for the user to manually enter such an address w/o
quotes (either typing or pasting it in).  However, this seems like a
far less problematic use case.  The ticket remains open due to this,
however.

Finally, some comments have been added to clarify the difference
between RFC822.MailboxAddress.get_full_address() and
to_rfc822_string().  I've also done a code-review to check that both
methods are being used correctly elsewhere in the code.
2014-07-25 13:23:00 -07:00
Marek Černocký
9f6020a627 Updated Czech translation 2014-07-23 13:14:58 +02:00
Robert Schroll
02eca78f64 Set the side of the window buttons in the HeaderBar from the GTK theme
Make two sets of the buttons, one for the start and one for the end of
the HeaderBar, and show one or the other based on the the theme.  Watch
the style context for changes in the theme and update accordingly.  Once
the composer is detached, the default close button is used, so hide both
and stop watching for style updates.  This assumes we never re-attach a
composer.

We also add a bit of space between the separator and the detach button.

https://bugzilla.gnome.org/show_bug.cgi?id=733372
2014-07-22 22:25:50 -04:00
Robert Schroll
b6bcbb9903 Force inline ComposerHeaderbar to have square corners
Also ensure that the main window HeaderBar has square corners when
running with ENABLE_UNITY.

https://bugzilla.gnome.org/show_bug.cgi?id=733374
2014-07-22 22:24:10 -04:00
Daniel Mustieles
d6a800ff2f Updated Spanish translation 2014-07-22 12:28:47 +02:00
Inaki Larranaga Murgoitio
2b18ba88db Added Basque language\nAdded 'eu' (Basque) to LINGUAS 2014-07-21 11:14:02 +02:00
Rafael Ferreira
10d2476b67 Updated Brazilian Portuguese translation 2014-07-20 17:10:32 +00:00