Milan Crha [Tue, 21 Aug 2012 13:22:29 +0000 (15:22 +0200)]
Start/stop book/cal views in a dedicated thread
Thus the backend, if it does any expensive operation during
the start/stop call, will not block factory's main thread,
thus the factory will not get unresponsive. This could happen
during autocompletion, for example.
Milan Crha [Tue, 21 Aug 2012 10:13:34 +0000 (12:13 +0200)]
Bug #680467 - Crash under camel_folder_search_search()
Andika Triwidada [Tue, 21 Aug 2012 07:33:16 +0000 (14:33 +0700)]
Updated Indonesian translation
Milan Crha [Tue, 21 Aug 2012 07:31:46 +0000 (09:31 +0200)]
Fix a compiler warning
Duarte Loreto [Sun, 19 Aug 2012 22:10:21 +0000 (23:10 +0100)]
Updated Portuguese translation
Matthew Barnes [Sun, 19 Aug 2012 20:00:51 +0000 (16:00 -0400)]
Post-release version bump.
Matthew Barnes [Sun, 19 Aug 2012 19:51:42 +0000 (15:51 -0400)]
NEWS update for 3.5.90 release.
Matthew Barnes [Thu, 12 Jul 2012 12:12:33 +0000 (08:12 -0400)]
Coding style and whitespace cleanup.
Fabien Tassin [Sat, 18 Aug 2012 17:56:16 +0000 (13:56 -0400)]
Bug 682103 - -fPIC build fix
Matthew Barnes [Sat, 18 Aug 2012 17:37:52 +0000 (13:37 -0400)]
Bug 682102 - Upstream Debian's 20_gettext_intltool.patch
Debian changelog:
20_gettext_intltool.patch: don't confuse autoreconf by using both
gettext and intltool.
Taking their word for it...
Matthew Barnes [Fri, 17 Aug 2012 23:29:19 +0000 (19:29 -0400)]
Bug 681679 - Typo in migration causes signatures to be dropped
Krishnababu Krothapalli [Fri, 17 Aug 2012 13:48:22 +0000 (19:18 +0530)]
Updated Telugu Translations
Matthew Barnes [Fri, 17 Aug 2012 13:23:38 +0000 (09:23 -0400)]
cache-reaper: Skip directories named "system".
Milan Crha [Fri, 17 Aug 2012 13:03:03 +0000 (15:03 +0200)]
Bug #680744 - IMAP: Does not update folder structure
Milan Crha [Fri, 17 Aug 2012 11:34:45 +0000 (13:34 +0200)]
Bug #678289 - Filters are not applied automatically to local maildir Inbox
Milan Crha [Fri, 17 Aug 2012 11:07:59 +0000 (13:07 +0200)]
Bug #682038 - "Show only this calendar" broken
Мирослав Николић [Fri, 17 Aug 2012 08:25:01 +0000 (10:25 +0200)]
Updated Serbian translation
Matthew Barnes [Thu, 16 Aug 2012 19:55:17 +0000 (15:55 -0400)]
ECalBackendWeather: Remove the remove_sync() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Matthew Barnes [Thu, 16 Aug 2012 19:54:28 +0000 (15:54 -0400)]
ECalBackendHttp: Remove the remove_sync() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Matthew Barnes [Thu, 16 Aug 2012 19:53:48 +0000 (15:53 -0400)]
ECalBackendFile: Remove the remove_sync() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Matthew Barnes [Thu, 16 Aug 2012 19:52:57 +0000 (15:52 -0400)]
ECalBackendContacts: Remove the remove_sync() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Matthew Barnes [Thu, 16 Aug 2012 19:52:15 +0000 (15:52 -0400)]
ECalBackendCaldav: Remove the remove_sync() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Matthew Barnes [Thu, 16 Aug 2012 19:48:37 +0000 (15:48 -0400)]
EBookBackendWebdav: Remove the remove() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Matthew Barnes [Thu, 16 Aug 2012 19:47:57 +0000 (15:47 -0400)]
EBookBackendLDAP: Remove the remove() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Matthew Barnes [Thu, 16 Aug 2012 19:47:16 +0000 (15:47 -0400)]
EBookBackendGoogle: Remove the remove() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Matthew Barnes [Thu, 16 Aug 2012 19:45:07 +0000 (15:45 -0400)]
EBookBackendFile: Remove the remove_sync() method.
Cache reaper module takes care of the data and cache cleanup now.
When a data source is removed, the backend for it is simply finalized.
Fran Diéguez [Thu, 16 Aug 2012 21:26:38 +0000 (23:26 +0200)]
Updated Galician translations
Matthew Barnes [Thu, 16 Aug 2012 19:37:01 +0000 (15:37 -0400)]
Deprecate e_client_remove_sync().
e_client_remove_sync() merely calls e_source_remove_sync() now.
Similarly for e_client_remove() / e_client_remove_finish().
Matthew Barnes [Thu, 16 Aug 2012 18:49:46 +0000 (14:49 -0400)]
cache-reaper: Clean up abandoned data directories.
Cache reaper now cleans up abandoned data directories for local address
books and calendars, but more conservatively than for cache directories.
Whereas a cache directory is marked as trash as soon as its data source
is removed and then allowed to linger for one week, a data directory is
only moved to trash when the registry service starts, and is allowed to
linger for four weeks. This should give ample time to recover the data
if needed.
Daniel Mustieles [Thu, 16 Aug 2012 14:08:25 +0000 (16:08 +0200)]
Updated Spanish translation
Matthew Barnes [Thu, 16 Aug 2012 11:47:11 +0000 (07:47 -0400)]
Revert "Export the EDBusAuthenticator interface from an isolated thread."
This reverts commit
e13cb4e0ba820694f908fe39255ff8f7a6239038.
Apparently this does not solve the problem it was trying to solve, and
is less stable than what was there before.
Matthew Barnes [Wed, 15 Aug 2012 21:58:48 +0000 (17:58 -0400)]
Fix typo.
Matthew Barnes [Wed, 15 Aug 2012 21:33:32 +0000 (17:33 -0400)]
Export the EDBusAuthenticator interface from an isolated thread.
This is similar to the problem I had with GDBusObjectManagerClient.
When a GDBusInterfaceSkeleton is exported, it grabs the thread-default
main context and emits method invocation signals from only that context.
Problem is when e_authenticator_try_password_sync() is called on an
EAuthenticationMediator, something may have pushed a different main
context and so the method invocation signal emissions are inhibited
and we eventually time out thinking the client is unresponsive.
The workaround is to export the GDBusInterfaceSkeleton from an
isolated thread where its signals cannot be inhibited. The thread
runs its own main loop until the EAuthenticationMediator object is
finalized, at which point the thread terminates and is joined with.
Matthew Barnes [Wed, 15 Aug 2012 16:18:53 +0000 (12:18 -0400)]
Add e_collection_backend_claim_all_resources().
Claims all previously used sources that have not yet been claimed by
e_collection_backend_new_child() and returns them in a GList. Note
that previously used sources can only be claimed once, so subsequent
calls to this function for backend will return NULL.
The backend is then expected to compare the returned list with a
current list of resources from a remote server, create new ESource
instances as needed with e_collection_backend_new_child(), discard
unneeded ESource instances with e_source_remove(), and export the
remaining instances with e_source_registry_server_add_source().
Colin Walters [Mon, 13 Aug 2012 13:50:50 +0000 (09:50 -0400)]
Bug 681321 - Support both old and new-buf libxml2 APIs
libxml2 changed the API for xmlOutputBuffer incompatibly.
See https://mail.gnome.org/archives/desktop-devel-list/2012-August/msg00004.html
Matthew Barnes [Mon, 13 Aug 2012 13:39:56 +0000 (09:39 -0400)]
Bug 681640 - Check for Python interpreter in configure.ac
For /addressbook/libebook/gen-western-table.py.
Nilamdyuti Goswami [Mon, 13 Aug 2012 08:08:54 +0000 (13:38 +0530)]
Assamese translation updated
Matthew Barnes [Sun, 12 Aug 2012 16:31:57 +0000 (12:31 -0400)]
Bump libcamel soname.
For the previous series of API changes.
Matthew Barnes [Sun, 12 Aug 2012 17:52:58 +0000 (13:52 -0400)]
Rename camel_service_get_settings().
Applying lessons learned from ESourceRegistry.
Rename camel_service_get_settings() to camel_service_ref_settings()
and have it return a new reference.
When returning a pointer to a reference-counted object in a multi-
threaded environment, always increase the object's reference count
before returning so as to transfer a new reference to the caller.
Otherwise it introduces a potential race where the reference-counted
object may lose its last reference and be freed while the caller is
still using the object. Even if the caller immediately increments
the object's reference count, it's still a potential race.
Transferring a new reference to the caller means the caller must
unreference the object when finished with it so the object will be
properly freed when it's no longer needed.
Matthew Barnes [Sun, 12 Aug 2012 14:12:38 +0000 (10:12 -0400)]
Rename camel_session_get_service().
Applying lessons learned from ESourceRegistry.
Rename camel_session_get_service() to camel_session_ref_service()
and have it return a new reference.
When returning a pointer to a reference-counted object in a multi-
threaded environment, always increase the object's reference count
before returning so as to transfer a new reference to the caller.
Otherwise it introduces a potential race where the reference-counted
object may lose its last reference and be freed while the caller is
still using the object. Even if the caller immediately increments
the object's reference count, it's still a potential race.
Transferring a new reference to the caller means the caller must
unreference the object when finished with it so the object will be
properly freed when it's no longer needed.
Similarly for camel_session_get_service_by_url().
Matthew Barnes [Sun, 12 Aug 2012 13:11:08 +0000 (09:11 -0400)]
Have camel_session_list_services() return new references.
Applying lessons learned from ESourceRegistry.
When returning a pointer to a reference-counted object in a multi-
threaded environment, always increase the object's reference count
before returning so as to transfer a new reference to the caller.
Otherwise it introduces a potential race where the reference-counted
object may lose its last reference and be freed while the caller is
still using the object. Even if the caller immediately increments
the object's reference count, it's still a potential race.
Transferring a new reference to the caller means the caller must
unreference the object when finished with it so the object will be
properly freed when it's no longer needed.
Making subtle behavioral changes like this without renaming the API
is usually considered bad, but since Evolution is the only consumer
we can easily keep the side-effects under control.
Matthew Barnes [Sun, 12 Aug 2012 12:23:15 +0000 (08:23 -0400)]
CamelSession: Have add_service() return a new reference.
Applying lessons learned from ESourceRegistry.
When returning a pointer to a reference-counted object in a multi-
threaded environment, always increase the object's reference count
before returning so as to transfer a new reference to the caller.
Otherwise it introduces a potential race where the reference-counted
object may lose its last reference and be freed while the caller is
still using the object. Even if the caller immediately increments
the object's reference count, it's still a potential race.
Transferring a new reference to the caller means the caller must
unreference the object when finished with it so the object will be
properly freed when it's no longer needed.
Making subtle behavioral changes like this without renaming the API
is usually considered bad, but since Evolution is the only consumer
we can easily keep the side-effects under control.
Matthew Barnes [Sun, 12 Aug 2012 12:08:05 +0000 (08:08 -0400)]
CamelSession: Remove camel_session_lock/unlock().
Because exposing mutexes in a public API is horrible.
Matthew Barnes [Sun, 12 Aug 2012 12:05:08 +0000 (08:05 -0400)]
CamelSession: Avoid camel_session_lock/unlock().
Use an internal mutex to guard the services hash table.
Matthew Barnes [Sun, 12 Aug 2012 11:09:12 +0000 (07:09 -0400)]
CamelSession: Make forward_to() method asynchronous.
Missed this while converting the rest of Camel to GIO's async pattern,
but came to realize Evolution's forward_to() implementation starts an
asynchronous CamelFolder.append_to() operation and returns TRUE.
So the return value from camel_session_forward_to() does not actually
indicate whether the message was successfully forwarded. In fact the
caller has no way of knowing!
This calls for an API break.
Split the forward_to() method into synchronous and asynchronous
variations:
gboolean (*forward_to_sync) (CamelSession *session,
CamelFolder *folder,
CamelMimeMessage *message,
const gchar *address,
GCancellable *cancellable,
GError **error);
void (*forward_to) (CamelSession *session,
CamelFolder *folder,
CamelMimeMessage *message,
const gchar *address,
gint io_priority,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
gboolean (*forward_to_finish) (CamelSession *session,
GAsyncResult *result,
GError **error);
Matthew Barnes [Sat, 11 Aug 2012 21:38:20 +0000 (17:38 -0400)]
Update API documentation.
Matthew Barnes [Sat, 11 Aug 2012 15:11:28 +0000 (11:11 -0400)]
Update git.mk.
Source: https://github.com/behdad/git.mk
Matthew Barnes [Fri, 10 Aug 2012 12:36:36 +0000 (08:36 -0400)]
e-book-backend-db-cache.h: Cleanups.
Clean up the header file while we're at it.
Matthew Barnes [Fri, 10 Aug 2012 12:31:01 +0000 (08:31 -0400)]
e-book-backend-db-cache.h: Avoid DB typedef.
Some distros use compiler settings that choke on duplicate typedefs.
Gentoo seems to be one of them.
Replace the DB typedef with a forward declaration of "struct __db"
and fix up all the function arguments that take a DB pointer.
Matthew Barnes [Fri, 10 Aug 2012 11:34:19 +0000 (07:34 -0400)]
mbox_store_get_full_path(): Improve path building.
Deal with the root path not ending in a directory separator, and use a
GString for heaven sake!
Matthew Barnes [Fri, 10 Aug 2012 01:55:17 +0000 (21:55 -0400)]
source_registry_server_create_source(): Create parent directories.
Same deal as the previous commit.
Matthew Barnes [Fri, 10 Aug 2012 00:12:44 +0000 (20:12 -0400)]
server_side_source_write(): Create parent directories.
Had a situation while restoring from a backup tarball where the
"sources" directory was getting deleted and consequently causing
g_file_replace_contents() to fail. So always make the directory
immediately before writing the key file to disk.
Milan Crha [Fri, 10 Aug 2012 10:14:12 +0000 (12:14 +0200)]
Fix typo in camel_debug() call, should be "pop3", not "pop", for POP3 provider
Milan Crha [Thu, 9 Aug 2012 17:21:15 +0000 (19:21 +0200)]
Do not update unread count in source folder for junk/deleted messages
Milan Crha [Thu, 9 Aug 2012 17:14:22 +0000 (19:14 +0200)]
Bug #681466 - Virtual Trash/Junk not updated on change
Sandeep Sheshrao Shedmake [Thu, 9 Aug 2012 11:33:52 +0000 (17:03 +0530)]
Updated Marathi Translations
Milan Crha [Thu, 9 Aug 2012 11:25:11 +0000 (13:25 +0200)]
Bug #679488 - Unable to send mail using SMTP
Aurimas Černius [Wed, 8 Aug 2012 20:18:36 +0000 (23:18 +0300)]
Updated Lithuanian translation
Milan Crha [Wed, 8 Aug 2012 06:52:24 +0000 (08:52 +0200)]
Bug #681046 - Occasional crash of evolution-source-registry
Daniel Mustieles [Tue, 7 Aug 2012 18:57:37 +0000 (20:57 +0200)]
Updated Spanish translation
Colin Walters [Tue, 7 Aug 2012 18:04:51 +0000 (14:04 -0400)]
vala: Fix srcdir != builddir
Milan Crha [Tue, 7 Aug 2012 17:04:39 +0000 (19:04 +0200)]
Fix regression after move to GSimpleAsyncResult in camel_service_disconnect
IMAP provider called disconnect in its finalize method, it was all fine
until move to GSimpleAsyncResult, which requires "live" GObject, which
is not true when called from finalize, thus everything breaks.
Moving the disconnect call to dispose function fixes this.
This was recognized when creating a new IMAP account and querying
for authentication methods.
Milan Crha [Tue, 7 Aug 2012 16:13:51 +0000 (18:13 +0200)]
Bug #681318 - Filter by Source account doesn't match in local folders
Chao-Hsiung Liao [Tue, 7 Aug 2012 05:31:25 +0000 (13:31 +0800)]
Updated Traditional Chinese translation(Hong Kong and Taiwan)
Sweta Kothari [Mon, 6 Aug 2012 06:14:01 +0000 (11:44 +0530)]
Updated gujarati file
Matthew Barnes [Sun, 5 Aug 2012 23:41:38 +0000 (19:41 -0400)]
Post-release version bump.
Matthew Barnes [Sun, 5 Aug 2012 23:13:48 +0000 (19:13 -0400)]
NEWS update for 3.5.5 release.
Nilamdyuti Goswami [Mon, 6 Aug 2012 03:16:10 +0000 (08:46 +0530)]
Assamese translation updated
Matthew Barnes [Sun, 5 Aug 2012 20:45:22 +0000 (16:45 -0400)]
Silly typo.
Matthew Barnes [Sun, 5 Aug 2012 20:09:36 +0000 (16:09 -0400)]
Fix mistake in the previous commit.
Got the signal emissions mixed up.
Matthew Barnes [Sun, 5 Aug 2012 19:56:18 +0000 (15:56 -0400)]
Bug 679808 - e_source_selector_set_primary_selection() has side-effects
In ESourceSelector parlance, the "primary selection" is the highlighted
tree view item. A tree view item is "selected" if the check box cell is
ticked. The two selection states are supposed to be orthogonal.
e_source_selector_set_primary_selection() has apparently for some time
been highlighting the requested item and also activating its check box.
That last part is an unwanted and undocumented side-effect.
This commit removes the side-effect and explicitly states in the API
documentation that the function does NOT alter the item's check box.
Мирослав Николић [Sat, 4 Aug 2012 02:51:57 +0000 (04:51 +0200)]
Updated Serbian translation
Matthew Barnes [Fri, 3 Aug 2012 16:47:01 +0000 (12:47 -0400)]
evolution-source-viewer: Add icons for new interfaces.
Matthew Barnes [Wed, 25 Jul 2012 18:47:57 +0000 (14:47 -0400)]
e_source_registry_commit_source_sync(): Handle collection members.
If a scratch source (with no GDBusObject) references a collection source
as an ancestor call e_source_remote_create_sync() on the collection source
instead of e_source_registry_create_sources_sync().
Matthew Barnes [Thu, 2 Aug 2012 17:51:41 +0000 (13:51 -0400)]
EServerSideSource: Support creating/deleting remote resources.
Add "remote-creatable" and "remote-deletable" properties which work the
same as the "removable" and "writable" properties in terms of exporting
and unexporting D-Bus interfaces.
Add handlers for Create() and Delete() D-Bus method invocations, which
call e_source_remote_create() and e_source_remote_delete() respectively.
Override the remote_create_sync() and remote_delete_sync() methods to
ferry the request to an associated ECollectionBackend (or set an error
if there is no associated ECollectionBackend).
Matthew Barnes [Wed, 25 Jul 2012 16:55:49 +0000 (12:55 -0400)]
ESource: Add functions to create/delete remote resources.
Matthew Barnes [Fri, 20 Jul 2012 17:24:31 +0000 (13:24 -0400)]
ECollectionBackend: Add virual methods to create/delete resources.
Matthew Barnes [Thu, 19 Jul 2012 12:20:05 +0000 (08:20 -0400)]
Add D-Bus interfaces for remote resource management.
Defines two new D-Bus interfaces for data source object paths:
org.gnome.evolution.dataserver.Source.RemoteCreatable
Create() - creates a remote resource
org.gnome.evolution.dataserver.Source.RemoteDeletable
Delete() - deletes a remote resource
These methods will be invoked through ESource objects on the client
side. On the server side, the corresponding EServerSideSource will
receive the method invocation, but forward to an ECollectionBackend
to perform the actual operation.
Matthew Barnes [Mon, 23 Jul 2012 03:27:36 +0000 (23:27 -0400)]
Add e_source_registry_server_ref_backend().
Returns the ECollectionBackend for a given ESource, if one exists.
This works for any collection member: the "collection" ESource itself
as well as any of its hierarchical descendants.
Matthew Barnes [Thu, 2 Aug 2012 18:58:49 +0000 (14:58 -0400)]
Remove collection_backend_children_contains().
Decided I don't need this for the moment, so removing it to silence an
"unused-function" compiler warning.
Nilamdyuti Goswami [Fri, 3 Aug 2012 08:58:47 +0000 (14:28 +0530)]
Assamese translation updated
Sweta Kothari [Fri, 3 Aug 2012 06:31:37 +0000 (12:01 +0530)]
Updated gujarati file
Matthew Barnes [Fri, 3 Aug 2012 02:28:19 +0000 (22:28 -0400)]
Remove docs/reference/.gitignore from source control.
Matthew Barnes [Fri, 3 Aug 2012 02:27:47 +0000 (22:27 -0400)]
configure.ac: Remove redundant check for gio-unix-2.0.
Patrick Ohly [Mon, 23 Jul 2012 11:19:24 +0000 (11:19 +0000)]
libecal: fix memory leak after failed object creation
Apparently e_gdbus_cal_call_create_objects_sync() returns a muids
array even in case of failures. Free it when returning the error.
Found in SyncEvolution unit tests with valgrind.
Milan Crha [Thu, 2 Aug 2012 09:22:48 +0000 (11:22 +0200)]
Conditionally enable bug-buddy/gtk+ also for evolution-source-registry
Milan Crha [Thu, 2 Aug 2012 09:07:08 +0000 (11:07 +0200)]
Debug-print also error message on ERROR authentication
Dan Vrátil [Wed, 1 Aug 2012 19:25:33 +0000 (21:25 +0200)]
Fix a memory leak in e-cal-system-timezone.c
Piotr Drąg [Wed, 1 Aug 2012 13:47:34 +0000 (15:47 +0200)]
Updated POTFILES.in
Matthew Barnes [Tue, 31 Jul 2012 22:07:02 +0000 (18:07 -0400)]
Use e_backend_authenticate_sync() in backends.
Matthew Barnes [Tue, 31 Jul 2012 21:58:18 +0000 (17:58 -0400)]
ECollectionBackend: Implement authenticate_sync() method.
Matthew Barnes [Tue, 31 Jul 2012 21:49:13 +0000 (17:49 -0400)]
ECalBackend: Implement authenticate_sync() method.
Matthew Barnes [Tue, 31 Jul 2012 21:45:35 +0000 (17:45 -0400)]
EBookBackend: Implement authenticate_sync() method.
Matthew Barnes [Tue, 31 Jul 2012 21:32:10 +0000 (17:32 -0400)]
EBackend: Add authenticate() sync+async methods.
These are convenience functions providing a consistent interface for
backends running in either the registry service itself or a client
process communicating with the registry service over D-Bus.
Dynamically loaded backend classes need not implement these methods.
They will inherit a suitable method implementation from ECalBackend,
EBookBackend or ECollectionBackend.
Christian Hilberg [Mon, 30 Jul 2012 14:16:13 +0000 (16:16 +0200)]
CamelIMAPXServer: untagged handler descriptor needs untagged response code
* CamelIMAPXUntaggedRespHandlerDesc needs a member
for the IMAP untagged response code
* this does also simplify much the code which generates
the initial lookup tables for the untagged response
handlers
Christian Hilberg [Fri, 20 Jul 2012 16:12:33 +0000 (18:12 +0200)]
CamelIMAPXServer: fixed API function for running custom commands
* imapx_command_run() deadlocks every now and then
when running custom CamelIMAPXCommands
* imapx_command_run_sync() does not, so we're using
this one although it is definitely not the best
possible solution
* imapx_command_run_sync() expects a CamelIMAPXJob
to be set on the CamelIMAPXCommand, so we're
setting a local one if the command does not have
a job set
Fran Diéguez [Mon, 30 Jul 2012 00:40:39 +0000 (02:40 +0200)]
Updated Galician translations
Matthew Barnes [Sun, 29 Jul 2012 12:54:20 +0000 (08:54 -0400)]
Remove flex/bison dependencies.
configure says "You need bison to build evolution-data-server"
No, actually, you don't. In fact I have no idea why these were ever
needed. "git blame" shows the requirements were present even in the
initial evolution-data-server commit in 2003, and yet even back then
I can't find evidence that flex or bison were actually used.
Matthew Barnes [Sat, 28 Jul 2012 16:04:27 +0000 (12:04 -0400)]
Replace e_source_registry_server_queue_auth_session().
I realized ECollectionBackends are going to need a proper asynchronous
authentication function so they know when authentication is achieved.
e_source_registry_server_queue_auth_session() is a "fire-and-forget"
function with no way for the caller to know if and when authentication
is achieved.
The replacement function, e_source_registry_server_authenticate_sync(),
is a variation of e_source_registry_authenticate_sync() for use in the
registry service itself. It takes an EAuthenticationSession instead of
an ESource.
Since this API has not yet seen a stable release, I'm going to forego
deprecating the old function and just remove it. This is an API break,
and the libebackend soname has been bumped accordingly.
Matthew Barnes [Fri, 27 Jul 2012 22:23:56 +0000 (18:23 -0400)]
Bug 678893 - Allow concurrent authentication sessions
I wrote the original queuing algorithm for authentication requests to
serialize requests to ensure password prompts never pile up. But that
means requests for which a cached password exists may wait longer than
necessary, especially if an authentication session already in progress
is taking a long time to complete.
This was before I started using GcrSystemPrompt, which also serializes
requests to ensure password prompts never pile up. That frees us up to
process authentication requests for different data sources concurrently.
This commit simplifies the queuing algorithm significantly and also
makes it thread-safe so authentication requests can be submitted from
any thread. This is going to be important for ECollectionBackends.