[evolution-ews] EWS registry backend: Handle gracefully when Host URL is not set
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-ews] EWS registry backend: Handle gracefully when Host URL is not set
- Date: Wed, 18 May 2022 16:35:53 +0000 (UTC)
commit c525d5855b138f6e3cd44d3f69852a31726f56d7
Author: Milan Crha <mcrha redhat com>
Date: Wed May 18 14:57:32 2022 +0200
EWS registry backend: Handle gracefully when Host URL is not set
It can happen the Host URL is not set, for example when the account
is created in GOA and the autodiscovery fails. Rather than claim
a set of runtime warnings on the evolution-source-registry console,
handle this case gracefully.
src/EWS/registry/e-ews-backend.c | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
---
diff --git a/src/EWS/registry/e-ews-backend.c b/src/EWS/registry/e-ews-backend.c
index 26ce2e9f..816c82a9 100644
--- a/src/EWS/registry/e-ews-backend.c
+++ b/src/EWS/registry/e-ews-backend.c
@@ -1136,7 +1136,18 @@ ews_backend_get_destination_address (EBackend *backend,
g_return_val_if_fail (ews_settings != NULL, FALSE);
host_url = camel_ews_settings_dup_hosturl (ews_settings);
- g_return_val_if_fail (host_url != NULL, FALSE);
+ if (!host_url) {
+ ESource *source;
+ ESourceAuthentication *auth_extension;
+
+ source = e_backend_get_source (backend);
+ auth_extension = e_source_get_extension (source, E_SOURCE_EXTENSION_AUTHENTICATION);
+
+ *host = e_source_authentication_dup_host (auth_extension);
+ *port = e_source_authentication_get_port (auth_extension);
+
+ return *host && **host;
+ }
soup_uri = soup_uri_new (host_url);
if (soup_uri) {
@@ -1294,6 +1305,7 @@ e_ews_backend_ref_connection_sync (EEwsBackend *backend,
{
EEwsConnection *connection = NULL;
ESourceAuthenticationResult local_result;
+ ESource *source;
CamelEwsSettings *settings;
gchar *hosturl;
gboolean success;
@@ -1310,9 +1322,19 @@ e_ews_backend_ref_connection_sync (EEwsBackend *backend,
if (connection != NULL || !backend->priv->credentials)
return connection;
+ source = e_backend_get_source (E_BACKEND (backend));
settings = ews_backend_get_settings (backend);
hosturl = camel_ews_settings_dup_hosturl (settings);
- connection = e_ews_connection_new_full (e_backend_get_source (E_BACKEND (backend)), hosturl,
settings, FALSE);
+ if (!hosturl) {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT, "Host URL not set");
+
+ if (result)
+ *result = E_SOURCE_AUTHENTICATION_ERROR;
+
+ return NULL;
+ }
+
+ connection = e_ews_connection_new_full (source, hosturl, settings, FALSE);
g_free (hosturl);
e_binding_bind_property (
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]