diff options
author | Milan Crha <mcrha@redhat.com> | 2023-01-04 12:00:11 +0100 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2023-01-04 12:00:11 +0100 |
commit | 640cc8675d48f69e7e9ffabde5a4c1c9d7b7222f (patch) | |
tree | 09de99a664badced489b1967f67e4a3a1a4f1700 | |
parent | 07f367b57bb4a63fd58265d082e451e15f06d6a6 (diff) | |
download | evolution-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.c | 15 |
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; } |