[evolution-data-server/gnome-3-36] I#204 - GOA-configured Nextcloud account not appearing
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-36] I#204 - GOA-configured Nextcloud account not appearing
- Date: Tue, 31 Mar 2020 13:37:15 +0000 (UTC)
commit ab149976f9b56dec9ef8363c52acfd6ef0c85bc4
Author: Milan Crha <mcrha redhat com>
Date: Tue Mar 31 15:39:42 2020 +0200
I#204 - GOA-configured Nextcloud account not appearing
Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/204
src/addressbook/backends/carddav/e-book-backend-carddav.c | 3 ++-
src/calendar/backends/caldav/e-cal-backend-caldav.c | 3 ++-
src/libebackend/e-backend.c | 10 ++++++----
src/libebackend/e-webdav-collection-backend.c | 9 ++++++++-
4 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/src/addressbook/backends/carddav/e-book-backend-carddav.c
b/src/addressbook/backends/carddav/e-book-backend-carddav.c
index b5f3f917c..f1cf3ccf7 100644
--- a/src/addressbook/backends/carddav/e-book-backend-carddav.c
+++ b/src/addressbook/backends/carddav/e-book-backend-carddav.c
@@ -251,7 +251,8 @@ ebb_carddav_connect_sync (EBookMetaBackend *meta_backend,
gboolean credentials_empty;
gboolean is_ssl_error;
- credentials_empty = (!credentials || !e_named_parameters_count (credentials)) &&
+ credentials_empty = (!credentials || !e_named_parameters_count (credentials) ||
+ (e_named_parameters_count (credentials) == 1 && e_named_parameters_exists
(credentials, E_SOURCE_CREDENTIAL_SSL_TRUST))) &&
e_soup_session_get_authentication_requires_credentials (E_SOUP_SESSION (webdav));
is_ssl_error = g_error_matches (local_error, SOUP_HTTP_ERROR, SOUP_STATUS_SSL_FAILED);
diff --git a/src/calendar/backends/caldav/e-cal-backend-caldav.c
b/src/calendar/backends/caldav/e-cal-backend-caldav.c
index 3f69c4e14..002e6c77e 100644
--- a/src/calendar/backends/caldav/e-cal-backend-caldav.c
+++ b/src/calendar/backends/caldav/e-cal-backend-caldav.c
@@ -235,7 +235,8 @@ ecb_caldav_connect_sync (ECalMetaBackend *meta_backend,
gboolean credentials_empty;
gboolean is_ssl_error;
- credentials_empty = (!credentials || !e_named_parameters_count (credentials)) &&
+ credentials_empty = (!credentials || !e_named_parameters_count (credentials) ||
+ (e_named_parameters_count (credentials) == 1 && e_named_parameters_exists
(credentials, E_SOURCE_CREDENTIAL_SSL_TRUST))) &&
e_soup_session_get_authentication_requires_credentials (E_SOUP_SESSION (webdav));
is_ssl_error = g_error_matches (local_error, SOUP_HTTP_ERROR, SOUP_STATUS_SSL_FAILED);
diff --git a/src/libebackend/e-backend.c b/src/libebackend/e-backend.c
index 04e2c0b02..b48fe1fa8 100644
--- a/src/libebackend/e-backend.c
+++ b/src/libebackend/e-backend.c
@@ -158,7 +158,7 @@ backend_network_monitor_can_reach_cb (GObject *source_object,
if (G_IS_IO_ERROR (error, G_IO_ERROR_CANCELLED) ||
host_is_reachable == e_backend_get_online (crd->backend)) {
- if (!G_IS_IO_ERROR (error, G_IO_ERROR_CANCELLED)) {
+ if (!G_IS_IO_ERROR (error, G_IO_ERROR_CANCELLED) && !host_is_reachable) {
if (e_source_get_connection_status (source) == E_SOURCE_CONNECTION_STATUS_SSL_FAILED)
e_source_set_connection_status (source,
E_SOURCE_CONNECTION_STATUS_DISCONNECTED);
@@ -245,8 +245,10 @@ backend_update_online_state_timeout_cb (gpointer user_data)
backend->priv->network_monitor_cancellable = cancellable;
g_mutex_unlock (&backend->priv->network_monitor_cancellable_lock);
- e_source_unset_last_credentials_required_arguments (e_backend_get_source (backend), NULL,
- backend_source_unset_last_credentials_required_arguments_cb, NULL);
+ if (!e_backend_get_online (backend)) {
+ e_source_unset_last_credentials_required_arguments (e_backend_get_source (backend),
NULL,
+ backend_source_unset_last_credentials_required_arguments_cb, NULL);
+ }
e_backend_set_online (backend, TRUE);
} else {
@@ -932,7 +934,7 @@ e_backend_set_online (EBackend *backend,
g_object_notify (G_OBJECT (backend), "online");
if (!backend->priv->online && backend->priv->source)
- e_source_set_connection_status (backend->priv->source,
E_SOURCE_CONNECTION_STATUS_DISCONNECTED);
+ backend_set_source_disconnected (backend->priv->source);
}
/**
diff --git a/src/libebackend/e-webdav-collection-backend.c b/src/libebackend/e-webdav-collection-backend.c
index 19bfc03e1..5983eafa5 100644
--- a/src/libebackend/e-webdav-collection-backend.c
+++ b/src/libebackend/e-webdav-collection-backend.c
@@ -513,6 +513,7 @@ e_webdav_collection_backend_discover_sync (EWebDAVCollectionBackend *webdav_back
GList *sources;
GSList *discovered_sources = NULL;
ENamedParameters *credentials_copy = NULL;
+ gboolean credentials_empty;
gboolean any_success = FALSE;
GError *local_error = NULL;
@@ -526,6 +527,9 @@ e_webdav_collection_backend_discover_sync (EWebDAVCollectionBackend *webdav_back
(!e_source_collection_get_contacts_enabled (collection_extension) || !contacts_url))
return E_SOURCE_AUTHENTICATION_ACCEPTED;
+ credentials_empty = !credentials || !e_named_parameters_count (credentials) ||
+ (e_named_parameters_count (credentials) == 1 && e_named_parameters_exists (credentials,
E_SOURCE_CREDENTIAL_SSL_TRUST));
+
if (credentials && !e_named_parameters_get (credentials, E_SOURCE_CREDENTIAL_USERNAME)) {
credentials_copy = e_named_parameters_new_clone (credentials);
e_named_parameters_set (credentials_copy, E_SOURCE_CREDENTIAL_USERNAME,
e_source_collection_get_identity (collection_extension));
@@ -611,7 +615,10 @@ e_webdav_collection_backend_discover_sync (EWebDAVCollectionBackend *webdav_back
e_collection_backend_authenticate_children (collection, credentials);
} else if (g_error_matches (local_error, SOUP_HTTP_ERROR, SOUP_STATUS_UNAUTHORIZED) ||
g_error_matches (local_error, SOUP_HTTP_ERROR, SOUP_STATUS_FORBIDDEN)) {
- result = E_SOURCE_AUTHENTICATION_REJECTED;
+ if (credentials_empty)
+ result = E_SOURCE_AUTHENTICATION_REQUIRED;
+ else
+ result = E_SOURCE_AUTHENTICATION_REJECTED;
g_clear_error (&local_error);
} else if (g_error_matches (local_error, SOUP_HTTP_ERROR, SOUP_STATUS_SSL_FAILED)) {
result = E_SOURCE_AUTHENTICATION_ERROR_SSL_FAILED;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]