summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gmail.com>2023-02-02 09:22:47 +0000
committerEmmanuele Bassi <ebassi@gmail.com>2023-02-02 09:22:47 +0000
commitedab0f85ea7c211cf12f72867c170f5b0358da91 (patch)
treeb62ad900df8dbb893a08d526aaf132e1b61b4237
parent9adc34e915699b3fd0b39ec3178c7fd0e7e1cae7 (diff)
parent1bcb0b6196a624e0f99dc50d169d314f57abb286 (diff)
downloadgnome-online-accounts-edab0f85ea7c211cf12f72867c170f5b0358da91.tar.gz
Merge branch '243-error-in-solving-nextcloud-account-address' into 'master'
Resolve "Error in solving Nextcloud account address" Closes #243 See merge request GNOME/gnome-online-accounts!119
-rw-r--r--src/goabackend/goaoauth2provider.c2
-rw-r--r--src/goabackend/goaowncloudprovider.c9
-rw-r--r--src/goabackend/goawebview.c2
3 files changed, 8 insertions, 5 deletions
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
index 5b8d43d..d739dec 100644
--- a/src/goabackend/goaoauth2provider.c
+++ b/src/goabackend/goaoauth2provider.c
@@ -797,7 +797,7 @@ on_web_view_decide_policy (WebKitWebView *web_view,
if (!g_str_has_prefix (requested_uri, redirect_uri))
goto default_behaviour;
- uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED, NULL);
+ uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, NULL);
fragment = g_uri_get_fragment (uri);
query = g_uri_get_query (uri);
diff --git a/src/goabackend/goaowncloudprovider.c b/src/goabackend/goaowncloudprovider.c
index 5441dfd..977eb4b 100644
--- a/src/goabackend/goaowncloudprovider.c
+++ b/src/goabackend/goaowncloudprovider.c
@@ -171,14 +171,16 @@ build_object (GoaProvider *provider,
account = goa_object_get_account (GOA_OBJECT (object));
identity = goa_account_get_identity (account);
uri_string = g_key_file_get_string (key_file, group, "Uri", NULL);
- uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED, NULL);
+ uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, NULL);
if (uri != NULL)
{
GUri *tmp_uri;
+ gchar *encoded_identity;
+ encoded_identity = g_uri_escape_string (identity, NULL, FALSE);
tmp_uri = g_uri_build_with_user (g_uri_get_flags (uri),
g_uri_get_scheme (uri),
- identity,
+ encoded_identity,
g_uri_get_password (uri),
g_uri_get_auth_params (uri),
g_uri_get_host (uri),
@@ -186,6 +188,7 @@ build_object (GoaProvider *provider,
g_uri_get_path (uri),
g_uri_get_query (uri),
g_uri_get_fragment (uri));
+ g_free (encoded_identity);
g_uri_unref (uri);
uri = tmp_uri;
}
@@ -397,7 +400,7 @@ normalize_uri (const gchar *address, gchar **server)
else
goto out;
- uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED, NULL);
+ uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED | G_URI_FLAGS_PARSE_RELAXED, NULL);
if (uri == NULL)
goto out;
diff --git a/src/goabackend/goawebview.c b/src/goabackend/goawebview.c
index adc7366..e98be0b 100644
--- a/src/goabackend/goawebview.c
+++ b/src/goabackend/goawebview.c
@@ -82,7 +82,7 @@ web_view_create_loading_title (const gchar *url)
g_return_val_if_fail (url != NULL && url[0] != '\0', NULL);
- uri = g_uri_parse (url, G_URI_FLAGS_NONE, NULL);
+ uri = g_uri_parse (url, G_URI_FLAGS_PARSE_RELAXED, NULL);
hostname = g_uri_get_host (uri);
/* translators: %s here is the address of the web page */
title = g_strdup_printf (_("Loading ā€œ%sā€ā€¦"), hostname);