Matthew Barnes [Tue, 22 May 2012 23:55:03 +0000 (19:55 -0400)]
Add e_util_strdup_strip().
Duplicates an input string and strips off any leading or trailing
whitespace. The resulting string is returned unless it is empty or
NULL, in which case the function returns NULL.
Useful in "set" functions for string properties.
Helps avoid expressions like (str != NULL && *str != '\0').
Matthew Barnes [Tue, 22 May 2012 13:11:21 +0000 (09:11 -0400)]
camel_service_disconnect(): Missing break in switch statement.
David Woodhouse [Mon, 21 May 2012 15:45:56 +0000 (16:45 +0100)]
Bug 667725 - imapx_untagged: code should not be reached
This code is evil.
When we scan a folder for new messages, we issue a 'FETCH 1:* (UID FLAGS)'
or similar command.
When we receive an untagged FETCH from the server telling us flags for a
message, we make a decision about whether that information was solicited
by such a command, or whether it was unsolicited.
If it was unsolicited, we process it normally as an asynchronous flags
update and all is well.
If it was solicited, we add the UID to a list. When the FETCH (UID FLAGS)
command *completes*, we'll sort that list and then fetch the full headers
for each message.
However, we weren't very good at telling when an update was solicited.
Assuming that only solicited messages will have a UID is bogus.
This was failing if an unsolicited update came in when the (UID FLAGS)
fetch had completed, and we were already fetching the message headers.
The "new" UID would be added to the end of the list, even if we were
already fetching that message or if we already had it in cache. We'd
issue a FETCH command for it, and the barf when the server complied,
because when the UID list wasn't sorted we wouldn't find the offending
uid when we looked for it.
The simple "fix" for this is to keep a boolean flag 'scan_changes' which
is TRUE only when that FETCH (UID FLAGS) command is running. If a flags
change comes in at any other time, it is definitely unsolicited and
should *not* be added to the uidset. This at least protects us from
having UIDs added after we've sorted the list and started to do other
things with it, which was causing the crash.
In fact, this whole 'solicited' vs. 'unsolicited' thing is a design
mistake. In imapx_untagged() we should never care about what we asked
for and what we didn't. That's why the responses are *untagged*. The
server tells us things about the state of the mailboxes, and we should
process that information into our own local cache — it shouldn't
*matter* what we asked for. But that's a more intrusive fix for another day.
In addition, we were reliably *triggering* this behaviour in some cases
because we had to issue a SELECT for the folder in question before
issuing the FETCH (UID FLAGS) command. And on completion of the SELECT,
if UIDNEXT had increased, we were automatically issuing a *new* FETCH
(UID FLAGS) command starting from the last-known-uid in our cache. This
was entirely gratiutous, so use the same scan_changes boolean flag to
avoid it in that situation.
David Woodhouse [Mon, 21 May 2012 15:42:26 +0000 (16:42 +0100)]
Fix off-by-one in uidset handling for fetches
When we get to the end of the for() loop processing the uidset, the index
variable is one *more* than the last item. That's how for() loops in C
work.
But when we break out of the middle because we are limiting the batch
size, we were forgetting to do the same and we were storing the index
of the last item that we'd already fetched.
This was causing us to re-fetch the last message of one batch, as the
first message of the next batch. Mostly harmless, but spotted and fixed
as part of bug 667725.
David Woodhouse [Mon, 21 May 2012 15:22:36 +0000 (16:22 +0100)]
Bug 676506 - imapx: After QRESYNC leaves us out of sync, a "full resync" doesn't work either.
Always fetch from the beginning of the folder.
David Woodhouse [Sat, 19 May 2012 23:40:53 +0000 (00:40 +0100)]
Bug 676403 - imapx: Syncing folder after server-side deletion of many messages is *very* slow
Fix this by introducing a new camel_folder_change_info_remove_uids()
function, and using it for the 'vanished' code. This reduces the time taken
from about 40ms per message, to about 50µs.
Antoine Jacoutot [Mon, 21 May 2012 00:28:44 +0000 (20:28 -0400)]
Bug 676108 - OpenBSD needs _XOPEN_SOURCE_EXTENDED for strptime(3)
strptime(3) was introduced in XPG4. On OpenBSD, just defining
_XOPEN_SOURCE gets you the older XPG3 which doesn't include strptime(3),
so we need to define _XOPEN_SOURCE_EXTENDED to get XPG4v2.
Fran Diéguez [Sun, 20 May 2012 15:59:37 +0000 (17:59 +0200)]
Updated Galician translations
Philip Withnall [Sat, 19 May 2012 22:16:27 +0000 (23:16 +0100)]
google: Fix a gcc warning in the Google backend
Signed/Unsigned comparison.
Philip Withnall [Sat, 19 May 2012 22:11:31 +0000 (23:11 +0100)]
google: Fix some gcc warnings in the GOA authoriser
Variable shadowing, missing default cases and signed/unsigned comparisons.
Matthew Barnes [Sat, 19 May 2012 17:39:56 +0000 (13:39 -0400)]
Bump Camel's shared object name.
For CamelService connect/disconnect API changes.
Matthew Barnes [Sat, 19 May 2012 16:02:05 +0000 (12:02 -0400)]
Remove camel_service_lock/unlock().
This has been the cause of many deadlocks, and is no longer needed with
CamelService's new asynchronous connect/disconnect API.
Matthew Barnes [Sat, 19 May 2012 12:41:15 +0000 (08:41 -0400)]
CamelService: Rewrite connect/disconnect API.
CamelService now has proper cancellable asynchronous functions for
connect and disconnect operations. The way this works is as follows:
The first service connect request runs asynchronously internally, even
if camel_service_connect_sync() is called. Subsequent connect requests
are queued until the first connect request finishes, then all requests
finish simultaneously with the same result. There are no retries; if
the first request fails, they all fail with the same error.
If a service disconnect is requested with one or more connect requests
outstanding, the connect requests are all cancelled and the disconnect
request runs asynchronously and plays by the same queueing rules.
CamelService's "connection-status" property will immediately reflect any
connect or disconnect requests in progress. Change notification signals
for this property, however, are emitted from CamelSession's main context.
Matthew Barnes [Sat, 19 May 2012 13:38:04 +0000 (09:38 -0400)]
Camel: Use camel_session_idle_add() for idle callbacks.
Ensures all idle callbacks are dispatched from the same GMainContext,
especially important for scheduling signal emissions.
Matthew Barnes [Sat, 19 May 2012 13:08:11 +0000 (09:08 -0400)]
CamelSession: Add camel_session_idle_add().
Schedules an idle callback on CamelSession's GMainContext.
Matthew Barnes [Sat, 19 May 2012 12:35:14 +0000 (08:35 -0400)]
CamelSession: Add a read-only "main-context" property.
Milan Crha [Fri, 18 May 2012 06:58:28 +0000 (08:58 +0200)]
Remove camel_folder_has_search_capability()
CamelFolder descendants are supposed to implement search API now.
Milan Crha [Thu, 17 May 2012 07:42:21 +0000 (09:42 +0200)]
Camel: Allow SSL certificate resave and use detailed errors from SSL stream
Daniel Mustieles [Wed, 16 May 2012 10:35:35 +0000 (12:35 +0200)]
Updated Spanish translation
Daniel Nylander [Wed, 16 May 2012 10:27:44 +0000 (12:27 +0200)]
Updated Swedish translation
Kjartan Maraas [Tue, 15 May 2012 12:16:06 +0000 (14:16 +0200)]
Updated Norwegian bokmål translation
Milan Crha [Tue, 15 May 2012 11:43:16 +0000 (13:43 +0200)]
Bug #671603 - Birthday calendar broken since 3.3.4
Chenthill Palanisamy [Tue, 15 May 2012 11:31:35 +0000 (17:01 +0530)]
Bug 664639 - [IMAPX] Doesn't quit gracefully on account disable
Chenthill Palanisamy [Tue, 15 May 2012 08:25:57 +0000 (13:55 +0530)]
Signal shutdown when imapx connection shutsdown so that the connection is
pruned from connection manager.
Milan Crha [Tue, 15 May 2012 06:10:10 +0000 (08:10 +0200)]
Remove unused variable
Milan Crha [Mon, 14 May 2012 18:16:22 +0000 (20:16 +0200)]
Bug #670279 - "Category" selector mnemonic not shown
Matthew Barnes [Mon, 14 May 2012 14:15:17 +0000 (10:15 -0400)]
Bug 675387 - Store certificates under $XDG_DATA_HOME
Move certificates from $HOME/.camel_certs to $XDG_DATA_HOME/camel_certs.
Matthew Barnes [Sun, 13 May 2012 13:50:28 +0000 (09:50 -0400)]
Use g_simple_async_result_set_check_cancellable().
Always call it immediately after g_simple_async_result_new().
Matthew Barnes [Sun, 13 May 2012 13:35:01 +0000 (09:35 -0400)]
Whitespace cleanups.
Luca Ferretti [Sat, 12 May 2012 18:02:57 +0000 (20:02 +0200)]
Updated Italian translation
Milan Crha [Fri, 11 May 2012 14:48:30 +0000 (16:48 +0200)]
Use locks in factory's weak object notify callback on data-book/cal
Milan Crha [Fri, 11 May 2012 12:33:44 +0000 (14:33 +0200)]
CalDAV: Also rename NoSuchCal to ObjectNotFound in caldav_server_put_object()
Fran Diéguez [Fri, 11 May 2012 09:34:39 +0000 (11:34 +0200)]
Updated Galician translations
Daniel Mustieles [Fri, 11 May 2012 08:56:20 +0000 (10:56 +0200)]
Updated Spanish translation
Milan Crha [Thu, 10 May 2012 18:02:31 +0000 (20:02 +0200)]
Better error message for SOUP_STATUS_SSL_FAILED response
Milan Crha [Thu, 10 May 2012 17:15:27 +0000 (19:15 +0200)]
CalDAV: Report NoSuchCal only when opening, ObjectNotFound otherwise
Milan Crha [Thu, 10 May 2012 10:54:16 +0000 (12:54 +0200)]
Make sure data-book/cal is closed/freed in a separate thread
When EDataBook/EDataCal was unreffed in the main thread then
any later calls to the factory were blocked by the backend
till it freed its resources, possibly making client look like
frozen/unresponsive.
Piotr Drąg [Tue, 8 May 2012 16:22:43 +0000 (18:22 +0200)]
Updated POTFILES.in
Matthew Barnes [Tue, 8 May 2012 14:46:33 +0000 (10:46 -0400)]
Add EAsyncClosure.
EAsyncClosure provides a simple way to run an asynchronous function
synchronously without blocking a running GMainLoop or using threads.
Merging this API from the account-mgmt branch as it has proven stable
and quite convenient. I've seen this pattern in use throughout GIO,
but to my knowledge it has never been formalized like this.
Chenthill Palanisamy [Tue, 8 May 2012 09:29:48 +0000 (14:59 +0530)]
Add a extended response handler for unhandled imapx tokens to be handled
by the derived providers.
Chenthill Palanisamy [Tue, 8 May 2012 09:17:04 +0000 (14:47 +0530)]
Split camel-imapx library and merge into camel so that providers can be written on top of imapx
Matt McCutchen [Fri, 4 May 2012 12:28:03 +0000 (14:28 +0200)]
Bug #606181 - Accepting bad SSL certificate applies to any hostname
Change the Camel certdb to look up certificates by expected hostname.
This way, accepting a bad certificate for one mail server does not give
it a free pass to impersonate the user's other mail servers. Storing a
second bad certificate for the same server will replace the first, but
that should be OK (Mozilla PSM works the same way).
The camel-cert.db format is unchanged except that it can now contain
multiple entries for the same certificate with different hostnames, and
if it contains multiple certificates for the same hostname, all but the
last will be dropped (becoming permanent the next time the certdb is
saved).
Users who were taking advantage of evolution-data-server's previous,
vulnerable behavior of accepting a certificate for a hostname other than
the originally user-approved one will get bad certificate dialogs and
will need to re-approve the certificate for the desired hostname(s).
Note: Case insensitive compare of host names added by mcrha.
Milan Crha [Fri, 4 May 2012 11:15:21 +0000 (13:15 +0200)]
Remove extra test on Google server photo data validity
It sometimes can happen that a contact has filled photo's etag,
while the photo itself is not present. In that case backend skipped
the contact, instead of passing it without photo.
Mathieu Trudel-Lapierre [Thu, 3 May 2012 10:00:10 +0000 (12:00 +0200)]
Bug #669191 - Address book dialog has incorrect default size
Matthew Barnes [Mon, 30 Apr 2012 17:13:02 +0000 (13:13 -0400)]
Require libsoup >= 2.38.1.
To pick up the fix for bug 673678:
"Property SSL_USE_SYSTEM_CA_FILE's value is ignored"
Fran Diéguez [Mon, 30 Apr 2012 14:28:37 +0000 (16:28 +0200)]
Updated Galician translations
Kjartan Maraas [Mon, 30 Apr 2012 08:00:06 +0000 (10:00 +0200)]
Updated Norwegian bokmål translation
Matthew Barnes [Sun, 29 Apr 2012 00:46:14 +0000 (20:46 -0400)]
Post-release version bump.
Matthew Barnes [Sun, 29 Apr 2012 00:42:40 +0000 (20:42 -0400)]
NEWS update for 3.5.1 release.
Matthew Barnes [Sun, 29 Apr 2012 00:04:39 +0000 (20:04 -0400)]
Update API documentation.
Fran Diéguez [Fri, 27 Apr 2012 15:16:41 +0000 (17:16 +0200)]
Updated Galician translations
Milan Crha [Fri, 27 Apr 2012 11:42:14 +0000 (13:42 +0200)]
Bug #669085 - Saving draft on Google server emits runtime warning
Daniel Mustieles [Fri, 27 Apr 2012 10:57:49 +0000 (12:57 +0200)]
Updated Spanish translation
Milan Crha [Fri, 27 Apr 2012 09:23:47 +0000 (11:23 +0200)]
Bug #664639 - [IMAPX] Doesn't quit gracefully on account disable
Milan Crha [Fri, 27 Apr 2012 07:37:17 +0000 (09:37 +0200)]
Bug #674257 - Recheck attachment availability on message download
Milan Crha [Thu, 26 Apr 2012 12:41:09 +0000 (14:41 +0200)]
Bug #669034 - [IMAP] Shows "Unknown background operation" on start
Milan Crha [Thu, 26 Apr 2012 11:49:15 +0000 (13:49 +0200)]
Fix Google Talk vCard attribute name definition
Milan Crha [Thu, 26 Apr 2012 11:46:11 +0000 (13:46 +0200)]
Bug #668989 - Add a twitter username to IM in contacts
Matthew Barnes [Tue, 24 Apr 2012 15:01:11 +0000 (11:01 -0400)]
Revert unintentional API break in libedataserver.
Partially reverses commit
90eb7da3ab9b00f504f5fed1f740c59485356f41.
Apparently this unintentionally broke language bindings.
Instead of renaming the e_source_peek_uid() and e_source_peek_name()
functions themselves, leave the old functions alone and define aliases
for the new names:
#define e_source_get_uid e_source_peek_uid
#define e_source_get_display_name e_source_peek_name
Using the new names throughout Evo and EDS is very helpful in reducing
diff noise between "master" and the "account-mgmt" branches so I can see
the important differences, so I don't want to revert the commit entirely.
Milan Crha [Tue, 24 Apr 2012 12:45:54 +0000 (14:45 +0200)]
Bug #672398 - CalDAV backend doesn't respect "Copy for offline" option
Milan Crha [Mon, 23 Apr 2012 14:53:54 +0000 (16:53 +0200)]
Bug #668679 - Crash on insertion of NULL in e_destination_set_contact()
Milan Crha [Mon, 23 Apr 2012 11:44:11 +0000 (13:44 +0200)]
Bug #668549 - Crash in objects_added_cb() in e-book-client-view.c
Milan Crha [Mon, 23 Apr 2012 10:09:36 +0000 (12:09 +0200)]
Bug #671537 - Option to validate SLL certificates with libsoup
Milan Crha [Mon, 23 Apr 2012 06:02:48 +0000 (08:02 +0200)]
Remove deprecated API from ESourceSelector
Matthew Barnes [Sat, 21 Apr 2012 20:27:49 +0000 (16:27 -0400)]
ESourceComboBox: Add e_source_combo_box_ref_active().
Replaces e_source_combo_box_get_active().
Returns a new ESource reference that the caller must unreference.
Matthew Barnes [Sat, 21 Apr 2012 20:20:53 +0000 (16:20 -0400)]
Remove e_source_combo_box_get/set_active_uid().
Adapt ESourceComboBox to use GtkComboBox's "active-id" property.
To get or set the active ESource UID, use:
gtk_combo_box_get_active_id()
gtk_combo_box_set_active_id()
Matthew Barnes [Sat, 21 Apr 2012 19:00:23 +0000 (15:00 -0400)]
Diff noise reduction.
Comparing 'master' and 'account-mgmt' branches.
Matthew Barnes [Sat, 21 Apr 2012 17:20:23 +0000 (13:20 -0400)]
Nudge ESource toward its new API.
Rename e_source_peek_uid() to e_source_get_uid(), and
e_source_peek_name() to e_source_get_display_name().
The old names are retained for now as deprecated aliases.
Matthew Barnes [Sat, 21 Apr 2012 16:01:12 +0000 (12:01 -0400)]
ESourceSelector: Add e_source_selector_ref_primary_selection().
Replaces e_source_selector_get_primary_selection().
Returns a new ESource reference that the caller must unreference.
Matthew Barnes [Sat, 21 Apr 2012 14:49:02 +0000 (10:49 -0400)]
ESourceSelector: Add e_source_selector_ref_source_by_path().
Replaces e_source_selector_get_source_by_path().
Returns a new ESource reference that the caller must unreference.
Matthew Barnes [Sat, 21 Apr 2012 14:48:10 +0000 (10:48 -0400)]
Bump libedataserverui shared object name.
In anticipation of some API breaks.
Matthew Barnes [Sat, 21 Apr 2012 13:47:20 +0000 (09:47 -0400)]
EBookBackendLDAP: Miscellaneous tweaks.
Eliminating diff noise with the account-mgmt branch.
Matthew Barnes [Sat, 21 Apr 2012 17:23:04 +0000 (13:23 -0400)]
Forgot one.
Matthew Barnes [Sat, 21 Apr 2012 17:16:15 +0000 (13:16 -0400)]
Add yet more missing linker flags.
Matthew Barnes [Sat, 21 Apr 2012 17:07:04 +0000 (13:07 -0400)]
Add another missing linker flag.
Matthew Barnes [Sat, 21 Apr 2012 17:05:11 +0000 (13:05 -0400)]
Add missing linker flag.
Milan Crha [Fri, 20 Apr 2012 08:33:21 +0000 (10:33 +0200)]
Bug #665381 - LDAP backend crash when query_ldap_root_dse() fails
Fran Diéguez [Thu, 19 Apr 2012 17:49:05 +0000 (19:49 +0200)]
Updated Galician translations
Matthew Barnes [Wed, 18 Apr 2012 18:37:59 +0000 (14:37 -0400)]
Update API documentation.
Matthew Barnes [Wed, 18 Apr 2012 15:54:13 +0000 (11:54 -0400)]
Remove some redundant argument checks.
Milan Crha [Wed, 18 Apr 2012 09:30:21 +0000 (11:30 +0200)]
Bug #674309 - Crash when calling oauth_init_nss() from two threads
Kjartan Maraas [Wed, 18 Apr 2012 07:25:46 +0000 (09:25 +0200)]
Updated Norwegian bokmål translation
Matthew Barnes [Tue, 17 Apr 2012 16:54:29 +0000 (12:54 -0400)]
EDataFactory: Readability tweaks.
Matthew Barnes [Tue, 17 Apr 2012 16:43:43 +0000 (12:43 -0400)]
Add e_data_factory_ref_backend_factory().
Just a way to get access to the EBackendFactory itself.
Needed on the account-mgmt branch to check whether a suitable E-D-S
backend factory is available to handle a given GNOME Online Account
provider type such as "exchange".
Milan Crha [Tue, 17 Apr 2012 15:44:52 +0000 (17:44 +0200)]
Bug #667891 - Rapid message list regen when downloading a folder
Sasi Bhushan [Tue, 17 Apr 2012 09:49:41 +0000 (15:19 +0530)]
Updated Telugu Translation
Matthew Barnes [Mon, 16 Apr 2012 22:02:53 +0000 (18:02 -0400)]
EDataFactory: Clarify a comment.
Verified this with Ryan Lortie.
Matthew Barnes [Mon, 16 Apr 2012 21:43:47 +0000 (17:43 -0400)]
EDataFactory: Move reload policy to subclasses.
The upcoming D-Bus service for data sources will be derived from
EDataFactoryClass, and it *does* support E_DBUS_SERVER_EXIT_RELOAD.
Matthew Barnes [Mon, 16 Apr 2012 14:03:10 +0000 (10:03 -0400)]
Remove EBackend::last-client-gone signal.
The signal is no longer needed due to the previous EDataFactory commit.
I also removed a couple unused "last_client_gone" function pointers in
EBookBackendClass and ECalBackendClass just to get rid of all traces of
the signal (and since I'm on an ABI breaking spree anyway).
The API breakage should be contained within E-D-S. The ABI breakage
will affect 3rd party extensions so the libedata-book and libedata-cal
shared object names have been bumped for good measure.
Matthew Barnes [Mon, 16 Apr 2012 13:43:09 +0000 (09:43 -0400)]
EDataFactory: Keep only weak references to backends.
Have EDataFactory keep only weak references to the EBackend instances it
creates. Then, when the last client connection to a backend closes, the
backend finalizes automatically. No explicit action required.
This breaks the API slightly by renaming e_data_factory_get_backend() to
e_data_factory_ref_backend() to reflect the fact that a strong reference
is now returned to the caller, and the caller must call g_object_unref()
when finished with it. The impact of the API break should be contained
within E-D-S.
This uses the new GWeakRef API in GLib 2.32 to ensure thread-safety.
The libebackend shared object name has already been bumped for 3.5.1.
Matthew Barnes [Mon, 16 Apr 2012 13:30:23 +0000 (09:30 -0400)]
Fix more missing linker flags.
Matthew Barnes [Mon, 16 Apr 2012 14:55:17 +0000 (10:55 -0400)]
EDataCalFactory: Implement GInitable.
Not needed just yet, but my previous batch of commits broke this
and it's needed on the account-mgmt branch. So rough it in now.
Matthew Barnes [Mon, 16 Apr 2012 14:53:40 +0000 (10:53 -0400)]
EDataBookFactory: Implement GInitable.
Not needed just yet, but my previous batch of commits broke this
and it's needed on the account-mgmt branch. So rough it in now.
Matthew Barnes [Mon, 16 Apr 2012 14:32:03 +0000 (10:32 -0400)]
EBookBackendLDAP: GSource IDs are unsigned.
Matthew Barnes [Sun, 15 Apr 2012 17:20:19 +0000 (13:20 -0400)]
EDataCalFactory targets ECalBackendFactory.
Matthew Barnes [Sun, 15 Apr 2012 17:18:52 +0000 (13:18 -0400)]
EDataCalFactory: Cosmetic tweaks.
Matthew Barnes [Sun, 15 Apr 2012 17:15:52 +0000 (13:15 -0400)]
EDataBookFactory targets EBookBackendFactory.
Matthew Barnes [Sun, 15 Apr 2012 17:14:23 +0000 (13:14 -0400)]
EDataBookFactory: Cosmetic tweaks.
Matthew Barnes [Sun, 15 Apr 2012 16:44:17 +0000 (12:44 -0400)]
ECalBackendFactory is missing a 'priv' pointer.
Unfortunately fixing this breaks libedata-cal's ABI.
Matthew Barnes [Sun, 15 Apr 2012 16:45:58 +0000 (12:45 -0400)]
EBookBackendFactory is missing a 'priv' pointer.
Unfortunately fixing this breaks libedata-book's ABI.