summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2023-01-04 12:00:11 +0100
committerMilan Crha <mcrha@redhat.com>2023-01-04 12:00:11 +0100
commit640cc8675d48f69e7e9ffabde5a4c1c9d7b7222f (patch)
tree09de99a664badced489b1967f67e4a3a1a4f1700
parent07f367b57bb4a63fd58265d082e451e15f06d6a6 (diff)
downloadevolution-data-server-640cc8675d48f69e7e9ffabde5a4c1c9d7b7222f.tar.gz
I#442 - e_util_change_uri_component: Reset default port when changing scheme
Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/442
-rw-r--r--src/libedataserver/e-data-server-util.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/libedataserver/e-data-server-util.c b/src/libedataserver/e-data-server-util.c
index 70a09f700..b938f1752 100644
--- a/src/libedataserver/e-data-server-util.c
+++ b/src/libedataserver/e-data-server-util.c
@@ -3016,7 +3016,20 @@ e_util_change_uri_component (GUri **inout_uri,
g_return_if_fail (component != SOUP_URI_PORT);
g_return_if_fail (component != SOUP_URI_NONE);
- tmp = soup_uri_copy (*inout_uri, component, value, SOUP_URI_NONE);
+ /* Make sure the default port is not "inherited" when changing scheme */
+ if (component == SOUP_URI_SCHEME && value && (
+ g_uri_get_port (*inout_uri) == 80 ||
+ g_uri_get_port (*inout_uri) == 443) && (
+ g_ascii_strcasecmp (value, "http") == 0 ||
+ g_ascii_strcasecmp (value, "https") == 0)) {
+ tmp = soup_uri_copy (*inout_uri,
+ component, value,
+ SOUP_URI_PORT, g_ascii_strcasecmp (value, "http") == 0 ? 80 : 443,
+ SOUP_URI_NONE);
+ } else {
+ tmp = soup_uri_copy (*inout_uri, component, value, SOUP_URI_NONE);
+ }
+
g_uri_unref (*inout_uri);
*inout_uri = tmp;
}