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:01:19 +0100
commit21d184ac227668976cf750f57d3211e1fab6be83 (patch)
tree9032ebf82d1c444d1c95344f9c1a1d8aa5772b8e
parent093f54199836667057705c3760584f292fd311a9 (diff)
downloadevolution-data-server-21d184ac227668976cf750f57d3211e1fab6be83.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 d2261d1d2..8ba113a99 100644
--- a/src/libedataserver/e-data-server-util.c
+++ b/src/libedataserver/e-data-server-util.c
@@ -2999,7 +2999,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;
}