--- a/libpurple/protocols/facebook/http.c Tue Dec 14 01:54:33 2021 -0600
+++ b/libpurple/protocols/facebook/http.c Tue Dec 14 01:55:51 2021 -0600
@@ -58,7 +58,7 @@
fb_http_params_new_parse(const gchar *data, gboolean isurl)
@@ -66,20 +66,18 @@
- uri = soup_uri_new(data);
+ if (!g_uri_split(data, G_URI_FLAGS_ENCODED_QUERY, NULL, NULL, NULL, + NULL, NULL, &query, NULL, NULL)) return fb_http_params_new();
params = soup_form_decode(data);
@@ -232,9 +230,12 @@
fb_http_urlcmp(const gchar *url1, const gchar *url2, gboolean protocol)
+#if SOUP_MAJOR_VERSION >= 3 if ((url1 == NULL) || (url2 == NULL)) {
@@ -244,14 +245,43 @@
+#if SOUP_MAJOR_VERSION >= 3 + uri1 = g_uri_parse(url1, SOUP_HTTP_URI_FLAGS, NULL); + return g_ascii_strcasecmp(url1, url2) == 0; + uri2 = g_uri_parse(url2, SOUP_HTTP_URI_FLAGS, NULL); + return g_ascii_strcasecmp(url1, url2) == 0; + /* Force the same scheme (and same port). */ + tmp = soup_uri_copy(uri1, + SOUP_URI_SCHEME, "https", + tmp = soup_uri_copy(uri2, + SOUP_URI_SCHEME, "https", uri1 = soup_uri_new(url1);
return g_ascii_strcasecmp(url1, url2) == 0;
uri2 = soup_uri_new(url2);
return g_ascii_strcasecmp(url1, url2) == 0;
@@ -262,10 +292,16 @@
soup_uri_set_scheme(uri1, SOUP_URI_SCHEME_HTTPS);
soup_uri_set_scheme(uri2, SOUP_URI_SCHEME_HTTPS);
ret = soup_uri_equal(uri1, uri2);
+#if SOUP_MAJOR_VERSION >= 3 --- a/libpurple/protocols/jabber/bosh.c Tue Dec 14 01:54:33 2021 -0600
+++ b/libpurple/protocols/jabber/bosh.c Tue Dec 14 01:55:51 2021 -0600
@@ -99,7 +99,7 @@
GProxyResolver *resolver;
account = purple_connection_get_account(js->gc);
resolver = purple_proxy_get_proxy_resolver(account, &error);
@@ -111,8 +111,8 @@
- url_p = soup_uri_new(url);
- if (!SOUP_URI_VALID_FOR_HTTP(url_p)) {
+ scheme = g_uri_peek_scheme(url); purple_debug_error("jabber-bosh", "Unable to parse given BOSH URL: %s",
g_object_unref(resolver);
@@ -127,7 +127,7 @@
conn->url = g_strdup(url);
- conn->is_ssl = (url_p->scheme == SOUP_URI_SCHEME_HTTPS);
+ conn->is_ssl = g_str_equal(scheme, "https"); conn->send_buff = g_string_new(NULL);
@@ -140,7 +140,6 @@
conn->rid = (((guint64)g_random_int() << 32) | g_random_int());
conn->rid &= 0xFFFFFFFFFFFFFLL;
g_object_unref(resolver);
jabber_bosh_connection_session_create(conn);
--- a/libpurple/proxy.c Tue Dec 14 01:54:33 2021 -0600
+++ b/libpurple/proxy.c Tue Dec 14 01:55:51 2021 -0600
@@ -552,23 +552,37 @@
(tmp = g_getenv("http_proxy")) != NULL ||
(tmp = g_getenv("HTTPPROXY")) != NULL)
+ gchar *scheme, *host, *username, *password; * export http_proxy="http://user:passwd@your.proxy.server:port/"
- url = soup_uri_new(tmp);
- if (!SOUP_URI_VALID_FOR_HTTP(url)) {
+ if (!g_uri_split_with_user(tmp, G_URI_FLAGS_HAS_PASSWORD, &scheme, + &username, &password, NULL, + &host, &port, NULL, NULL, NULL, &error)) + purple_debug_warning("proxy", "Couldn't parse URL: %s: %s", tmp, error->message); + if (!purple_strequal(scheme, "http")) { purple_debug_warning("proxy", "Couldn't parse URL: %s", tmp);
- purple_proxy_info_set_host(gpi, url->host);
- purple_proxy_info_set_username(gpi, url->user);
- purple_proxy_info_set_password(gpi, url->password);
- purple_proxy_info_set_port(gpi, url->port);
+ purple_proxy_info_set_host(gpi, host); + purple_proxy_info_set_username(gpi, username); + purple_proxy_info_set_password(gpi, password); + purple_proxy_info_set_port(gpi, port);
/* XXX: Do we want to skip this step if user/password/port were part of url? */
if ((tmp = g_getenv("HTTP_PROXY_USER")) != NULL ||
--- a/libpurple/upnp.c Tue Dec 14 01:54:33 2021 -0600
+++ b/libpurple/upnp.c Tue Dec 14 01:55:51 2021 -0600
@@ -420,7 +420,8 @@
purple_upnp_parse_description(const gchar* descriptionURL, UPnPDiscoveryData *dd)
/* Remove the timeout because everything it is waiting for has
* successfully completed */
@@ -430,13 +431,14 @@
/* Extract base url out of the descriptionURL.
* Example description URL: http://192.168.1.1:5678/rootDesc.xml
- uri = soup_uri_new(descriptionURL);
+ if (!g_uri_split_network(descriptionURL, G_URI_FLAGS_NONE, NULL, &host, upnp_parse_description_cb(NULL, NULL, dd);
- dd->full_url = g_strdup_printf("http://%s:%d", uri->host, uri->port);
+ dd->full_url = g_strdup_printf("http://%s:%d", host, port); msg = soup_message_new("GET", descriptionURL);
// purple_http_request_set_max_len(msg, MAX_UPNP_DOWNLOAD);
@@ -815,33 +817,35 @@
- uri = soup_uri_new(control_info.control_url);
+ if (!g_uri_split_network(control_info.control_url, G_URI_FLAGS_NONE, NULL, purple_debug_error("upnp",
- "lookup_internal_ip(): Failed In Parse URL\n");
+ "lookup_internal_ip(): Failed In Parse URL: %s", client = purple_gio_socket_client_new(NULL, &error);
purple_debug_error("upnp", "Get Local IP Connect to %s:%d Failed: %s",
- uri->host, uri->port, error->message);
+ host, port, error->message);
- purple_debug_info("upnp", "Attempting connection to %s:%u\n", uri->host,
- g_socket_client_connect_to_host_async(client, uri->host, uri->port, NULL,
+ purple_debug_info("upnp", "Attempting connection to %s:%u\n", host, port); + g_socket_client_connect_to_host_async(client, host, port, NULL, looked_up_internal_ip_cb, NULL);