diff options
Diffstat (limited to 'meta-gnome/recipes-gnome/gnome-online-accounts/files/0001-Use-GUri-instead-of-SoupURI.patch')
-rw-r--r-- | meta-gnome/recipes-gnome/gnome-online-accounts/files/0001-Use-GUri-instead-of-SoupURI.patch | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/meta-gnome/recipes-gnome/gnome-online-accounts/files/0001-Use-GUri-instead-of-SoupURI.patch b/meta-gnome/recipes-gnome/gnome-online-accounts/files/0001-Use-GUri-instead-of-SoupURI.patch new file mode 100644 index 0000000000..11fc96bc28 --- /dev/null +++ b/meta-gnome/recipes-gnome/gnome-online-accounts/files/0001-Use-GUri-instead-of-SoupURI.patch @@ -0,0 +1,351 @@ +From 5a5abbedb171986dbf6f5a37577ec6afa892b66b Mon Sep 17 00:00:00 2001 +From: Carlos Garcia Campos <cgarcia@igalia.com> +Date: Mon, 7 Jun 2021 16:31:18 +0200 +Subject: [PATCH 1/2] Use GUri instead of SoupURI + +In preparation for libsoup3 where SoupURI has been removed in favor of +GUri. + +Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gnome-online-accounts/-/merge_requests/73] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + configure.ac | 2 +- + src/goabackend/goaoauth2provider.c | 11 +-- + src/goabackend/goaoauthprovider.c | 8 +- + src/goabackend/goaowncloudprovider.c | 107 ++++++++++++++++----------- + src/goabackend/goawebview.c | 9 +-- + 5 files changed, 80 insertions(+), 57 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 1f88bbd..7c0b39d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -90,7 +90,7 @@ GTK_DOC_CHECK([1.3]) + # Libraries + # + +-PKG_CHECK_MODULES(GLIB, [glib-2.0 gio-2.0 gio-unix-2.0 >= 2.52]) ++PKG_CHECK_MODULES(GLIB, [glib-2.0 gio-2.0 gio-unix-2.0 >= 2.67.4]) + AC_SUBST(GLIB_CFLAGS) + AC_SUBST(GLIB_LIBS) + +diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c +index 3715431..2757838 100644 +--- a/src/goabackend/goaoauth2provider.c ++++ b/src/goabackend/goaoauth2provider.c +@@ -763,7 +763,7 @@ on_web_view_decide_policy (WebKitWebView *web_view, + GHashTable *key_value_pairs; + WebKitNavigationAction *action; + WebKitURIRequest *request; +- SoupURI *uri; ++ GUri *uri; + const gchar *fragment; + const gchar *oauth2_error; + const gchar *query; +@@ -793,9 +793,9 @@ on_web_view_decide_policy (WebKitWebView *web_view, + if (!g_str_has_prefix (requested_uri, redirect_uri)) + goto default_behaviour; + +- uri = soup_uri_new (requested_uri); +- fragment = soup_uri_get_fragment (uri); +- query = soup_uri_get_query (uri); ++ uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED, NULL); ++ fragment = g_uri_get_fragment (uri); ++ query = g_uri_get_query (uri); + + /* Three cases: + * 1) we can either have the backend handle the URI for us, or +@@ -808,7 +808,7 @@ on_web_view_decide_policy (WebKitWebView *web_view, + { + gchar *url; + +- url = soup_uri_to_string (uri, FALSE); ++ url = g_uri_to_string (uri); + if (!goa_oauth2_provider_process_redirect_url (self, url, &priv->access_token, &priv->error)) + { + g_prefix_error (&priv->error, _("Authorization response: ")); +@@ -889,6 +889,7 @@ on_web_view_decide_policy (WebKitWebView *web_view, + goto ignore_request; + + ignore_request: ++ g_uri_unref (uri); + g_assert (response_id != GTK_RESPONSE_NONE); + if (response_id < 0) + gtk_dialog_response (priv->dialog, response_id); +diff --git a/src/goabackend/goaoauthprovider.c b/src/goabackend/goaoauthprovider.c +index 0bfab6b..ff0927e 100644 +--- a/src/goabackend/goaoauthprovider.c ++++ b/src/goabackend/goaoauthprovider.c +@@ -643,7 +643,7 @@ on_web_view_decide_policy (WebKitWebView *web_view, + { + GHashTable *key_value_pairs; + IdentifyData *data = user_data; +- SoupURI *uri; ++ GUri *uri; + WebKitNavigationAction *action; + WebKitURIRequest *request; + const gchar *query; +@@ -664,8 +664,8 @@ on_web_view_decide_policy (WebKitWebView *web_view, + if (!g_str_has_prefix (requested_uri, redirect_uri)) + goto default_behaviour; + +- uri = soup_uri_new (requested_uri); +- query = soup_uri_get_query (uri); ++ uri = g_uri_parse (requested_uri, G_URI_FLAGS_ENCODED, NULL); ++ query = g_uri_get_query (uri); + + if (query != NULL) + { +@@ -678,6 +678,8 @@ on_web_view_decide_policy (WebKitWebView *web_view, + g_hash_table_unref (key_value_pairs); + } + ++ g_uri_unref (uri); ++ + if (data->oauth_verifier != NULL) + goto ignore_request; + +diff --git a/src/goabackend/goaowncloudprovider.c b/src/goabackend/goaowncloudprovider.c +index d142966..10734be 100644 +--- a/src/goabackend/goaowncloudprovider.c ++++ b/src/goabackend/goaowncloudprovider.c +@@ -22,8 +22,6 @@ + + #include <glib/gi18n-lib.h> + +-#include <libsoup/soup.h> +- + #include "goahttpclient.h" + #include "goaprovider.h" + #include "goaowncloudprovider.h" +@@ -78,45 +76,42 @@ get_provider_features (GoaProvider *provider) + /* ---------------------------------------------------------------------------------------------------- */ + + static char * +-uri_to_string_with_path (SoupURI *soup_uri, const gchar *path) ++uri_to_string_with_path (GUri *uri, const gchar *path) + { + gchar *uri_string; + gchar *uri_tmp; + +- if (soup_uri == NULL) ++ if (uri == NULL) + return NULL; + +- uri_tmp = soup_uri_to_string (soup_uri, FALSE); ++ uri_tmp = g_uri_to_string (uri); + uri_string = g_strconcat (uri_tmp, path, NULL); + g_free (uri_tmp); + + return uri_string; + } + +-static char *get_webdav_uri (SoupURI *soup_uri) ++static char *get_webdav_uri (GUri *uri) + { +- SoupURI *uri_tmp; ++ GUri *uri_tmp; + gchar *uri_webdav; + const gchar *scheme; +- guint port; + +- if (soup_uri == NULL) ++ if (uri == NULL) + return NULL; + +- scheme = soup_uri_get_scheme (soup_uri); +- port = soup_uri_get_port (soup_uri); +- uri_tmp = soup_uri_copy (soup_uri); +- +- if (g_strcmp0 (scheme, SOUP_URI_SCHEME_HTTPS) == 0) +- soup_uri_set_scheme (uri_tmp, "davs"); +- else +- soup_uri_set_scheme (uri_tmp, "dav"); +- +- if (!soup_uri_uses_default_port (soup_uri)) +- soup_uri_set_port (uri_tmp, port); ++ scheme = g_uri_get_scheme (uri); ++ uri_tmp = g_uri_build (g_uri_get_flags (uri), ++ g_strcmp0 (scheme, "https") == 0 ? "davs" : "dav", ++ g_uri_get_userinfo (uri), ++ g_uri_get_host (uri), ++ g_uri_get_port (uri), ++ g_uri_get_path (uri), ++ g_uri_get_query (uri), ++ g_uri_get_fragment (uri)); + + uri_webdav = uri_to_string_with_path (uri_tmp, WEBDAV_ENDPOINT); +- soup_uri_free (uri_tmp); ++ g_uri_unref (uri_tmp); + + return uri_webdav; + } +@@ -140,7 +135,7 @@ build_object (GoaProvider *provider, + gchar *uri_carddav; + gchar *uri_webdav; + GoaPasswordBased *password_based = NULL; +- SoupURI *uri = NULL; ++ GUri *uri = NULL; + gboolean accept_ssl_errors; + gboolean calendar_enabled; + gboolean contacts_enabled; +@@ -176,9 +171,24 @@ 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 = soup_uri_new (uri_string); ++ uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED, NULL); + if (uri != NULL) +- soup_uri_set_user (uri, identity); ++ { ++ GUri *tmp_uri; ++ ++ tmp_uri = g_uri_build_with_user (g_uri_get_flags (uri), ++ g_uri_get_scheme (uri), ++ identity, ++ g_uri_get_password (uri), ++ g_uri_get_auth_params (uri), ++ g_uri_get_host (uri), ++ g_uri_get_port (uri), ++ g_uri_get_path (uri), ++ g_uri_get_query (uri), ++ g_uri_get_fragment (uri)); ++ g_uri_unref (uri); ++ uri = tmp_uri; ++ } + + accept_ssl_errors = g_key_file_get_boolean (key_file, group, "AcceptSslErrors", NULL); + +@@ -224,7 +234,7 @@ build_object (GoaProvider *provider, + + out: + g_clear_object (&password_based); +- g_clear_pointer (&uri, soup_uri_free); ++ g_clear_pointer (&uri, g_uri_unref); + g_free (uri_string); + return ret; + } +@@ -354,8 +364,11 @@ add_entry (GtkWidget *grid, + static gchar * + normalize_uri (const gchar *address, gchar **server) + { +- SoupURI *uri = NULL; ++ GUri *uri = NULL; ++ GUri *uri_tmp = NULL; + const gchar *path; ++ const gchar *new_scheme; ++ gchar *new_path = NULL; + gchar *ret = NULL; + gchar *scheme = NULL; + gchar *uri_string = NULL; +@@ -384,48 +397,56 @@ normalize_uri (const gchar *address, gchar **server) + else + goto out; + +- uri = soup_uri_new (uri_string); ++ uri = g_uri_parse (uri_string, G_URI_FLAGS_ENCODED, NULL); + if (uri == NULL) + goto out; + + if (g_strcmp0 (scheme, "dav") == 0) +- soup_uri_set_scheme (uri, SOUP_URI_SCHEME_HTTP); ++ new_scheme = "http"; + else if (g_strcmp0 (scheme, "davs") == 0) +- soup_uri_set_scheme (uri, SOUP_URI_SCHEME_HTTPS); ++ new_scheme = "https"; ++ else ++ new_scheme = g_uri_get_scheme (uri); + +- path = soup_uri_get_path (uri); ++ path = g_uri_get_path (uri); + if (!g_str_has_suffix (path, "/")) +- { +- gchar *new_path; +- + new_path = g_strconcat (path, "/", NULL); +- soup_uri_set_path (uri, new_path); +- path = soup_uri_get_path (uri); +- g_free (new_path); +- } ++ ++ uri_tmp = g_uri_build (g_uri_get_flags (uri), ++ new_scheme, ++ g_uri_get_userinfo (uri), ++ g_uri_get_host (uri), ++ g_uri_get_port (uri), ++ new_path ? new_path : path, ++ g_uri_get_query (uri), ++ g_uri_get_fragment (uri)); ++ g_free (new_path); ++ g_uri_unref (uri); ++ uri = uri_tmp; ++ path = g_uri_get_path (uri); + + if (server != NULL) + { + gchar *port_string; + gchar *pretty_path; +- guint port; ++ gint port; + +- port = soup_uri_get_port (uri); +- port_string = g_strdup_printf (":%u", port); ++ port = g_uri_get_port (uri); ++ port_string = g_strdup_printf (":%d", port); + + pretty_path = g_strdup (path); + pretty_path[strlen(pretty_path) - 1] = '\0'; + +- *server = g_strconcat (soup_uri_get_host (uri), (port == std_port) ? "" : port_string, pretty_path, NULL); ++ *server = g_strconcat (g_uri_get_host (uri), (port == std_port || port == -1) ? "" : port_string, pretty_path, NULL); + + g_free (port_string); + g_free (pretty_path); + } + +- ret = soup_uri_to_string (uri, FALSE); ++ ret = g_uri_to_string (uri); + + out: +- g_clear_pointer (&uri, soup_uri_free); ++ g_clear_pointer (&uri, g_uri_unref); + g_free (scheme); + g_free (uri_string); + return ret; +diff --git a/src/goabackend/goawebview.c b/src/goabackend/goawebview.c +index 2438e0c..3df600e 100644 +--- a/src/goabackend/goawebview.c ++++ b/src/goabackend/goawebview.c +@@ -25,7 +25,6 @@ + #include <glib.h> + #include <glib/gi18n-lib.h> + #include <jsc/jsc.h> +-#include <libsoup/soup.h> + #include <webkit2/webkit2.h> + + #include "goawebview.h" +@@ -77,17 +76,17 @@ web_view_clear_notify_progress_cb (gpointer user_data) + static char * + web_view_create_loading_title (const gchar *url) + { +- SoupURI *uri; ++ GUri *uri; + const gchar *hostname; + gchar *title; + + g_return_val_if_fail (url != NULL && url[0] != '\0', NULL); + +- uri = soup_uri_new (url); +- hostname = soup_uri_get_host (uri); ++ uri = g_uri_parse (url, G_URI_FLAGS_NONE, NULL); ++ hostname = g_uri_get_host (uri); + /* translators: %s here is the address of the web page */ + title = g_strdup_printf (_("Loading ā%sāā¦"), hostname); +- soup_uri_free (uri); ++ g_uri_unref (uri); + + return title; + } +-- +2.33.1 + |