summaryrefslogtreecommitdiff
path: root/addressbook
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2015-05-06 13:57:05 +0200
committerMilan Crha <mcrha@redhat.com>2015-05-06 13:57:05 +0200
commitd6e2499755d9c81bf80422ea02ed0eeaf9d523b4 (patch)
tree2643e91ed43aa77e2ae435fdf80473517ab5dcef /addressbook
parent336bb61612688618efce8a0de7c9b7dba2f24c82 (diff)
downloadevolution-data-server-d6e2499755d9c81bf80422ea02ed0eeaf9d523b4.tar.gz
Add ESource::UnsetLastCredentialsRequiredArguments method
This is used to unset any failed cached credentials responses, thus when the backend is closed, which means it is not interested in the credentials anymore, the clients won't ask for them.
Diffstat (limited to 'addressbook')
-rw-r--r--addressbook/libedata-book/e-data-book.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/addressbook/libedata-book/e-data-book.c b/addressbook/libedata-book/e-data-book.c
index 96a52fb86..f4c35fef5 100644
--- a/addressbook/libedata-book/e-data-book.c
+++ b/addressbook/libedata-book/e-data-book.c
@@ -1331,12 +1331,30 @@ data_book_handle_get_cursor_cb (EDBusAddressBook *dbus_interface,
return TRUE;
}
+static void
+data_book_source_unset_last_credentials_required_arguments_cb (GObject *source_object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GError *local_error = NULL;
+
+ g_return_if_fail (E_IS_SOURCE (source_object));
+
+ e_source_unset_last_credentials_required_arguments_finish (E_SOURCE (source_object), result, &local_error);
+
+ if (local_error)
+ g_debug ("%s: Call failed: %s", G_STRFUNC, local_error->message);
+
+ g_clear_error (&local_error);
+}
+
static gboolean
data_book_handle_close_cb (EDBusAddressBook *dbus_interface,
GDBusMethodInvocation *invocation,
EDataBook *data_book)
{
EBookBackend *backend;
+ ESource *source;
const gchar *sender;
/* G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED should be set on
@@ -1347,6 +1365,10 @@ data_book_handle_close_cb (EDBusAddressBook *dbus_interface,
backend = e_data_book_ref_backend (data_book);
g_return_val_if_fail (backend != NULL, FALSE);
+ source = e_backend_get_source (E_BACKEND (backend));
+ e_source_unset_last_credentials_required_arguments (source, NULL,
+ data_book_source_unset_last_credentials_required_arguments_cb, NULL);
+
sender = g_dbus_method_invocation_get_sender (invocation);
g_signal_emit_by_name (backend, "closed", sender);