diff options
author | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-10-12 04:38:00 -0400 |
---|---|---|
committer | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-10-12 04:38:00 -0400 |
commit | 09edd8ff032748a46c99f16f14a3795497667024 (patch) | |
tree | e9a679f5e4c67b6b9c167b64986decf6a92dd937 | |
parent | c0ebbf5272fe0759cc1db5084fd7b2cf0495ea21 (diff) | |
download | pidgin-09edd8ff032748a46c99f16f14a3795497667024.tar.gz |
Rewrite fb_http_urlcmp using SoupURI.
-rw-r--r-- | libpurple/protocols/facebook/http.c | 55 |
1 files changed, 14 insertions, 41 deletions
diff --git a/libpurple/protocols/facebook/http.c b/libpurple/protocols/facebook/http.c index a37bcd3576..157044b068 100644 --- a/libpurple/protocols/facebook/http.c +++ b/libpurple/protocols/facebook/http.c @@ -294,25 +294,9 @@ fb_http_params_set_strf(FbHttpParams *params, const gchar *name, gboolean fb_http_urlcmp(const gchar *url1, const gchar *url2, gboolean protocol) { - const gchar *str1; - const gchar *str2; + SoupURI *uri1; + SoupURI *uri2; gboolean ret = TRUE; - gint int1; - gint int2; - guint i; - PurpleHttpURL *purl1; - PurpleHttpURL *purl2; - - static const gchar * (*funcs[]) (const PurpleHttpURL *url) = { - /* Always first so it can be skipped */ - purple_http_url_get_protocol, - - purple_http_url_get_fragment, - purple_http_url_get_host, - purple_http_url_get_password, - purple_http_url_get_path, - purple_http_url_get_username - }; if ((url1 == NULL) || (url2 == NULL)) { return url1 == url2; @@ -322,39 +306,28 @@ fb_http_urlcmp(const gchar *url1, const gchar *url2, gboolean protocol) return TRUE; } - purl1 = purple_http_url_parse(url1); + uri1 = soup_uri_new(url1); - if (purl1 == NULL) { + if (uri1 == NULL) { return g_ascii_strcasecmp(url1, url2) == 0; } - purl2 = purple_http_url_parse(url2); + uri2 = soup_uri_new(url2); - if (purl2 == NULL) { - purple_http_url_free(purl1); + if (uri2 == NULL) { + soup_uri_free(uri1); return g_ascii_strcasecmp(url1, url2) == 0; } - for (i = protocol ? 0 : 1; i < G_N_ELEMENTS(funcs); i++) { - str1 = funcs[i](purl1); - str2 = funcs[i](purl2); - - if (!purple_strequal(str1, str2)) { - ret = FALSE; - break; - } + if (!protocol) { + /* Force the same scheme (and same port). */ + soup_uri_set_scheme(uri1, SOUP_URI_SCHEME_HTTPS); + soup_uri_set_scheme(uri2, SOUP_URI_SCHEME_HTTPS); } - if (ret && protocol) { - int1 = purple_http_url_get_port(purl1); - int2 = purple_http_url_get_port(purl2); - - if (int1 != int2) { - ret = FALSE; - } - } + ret = soup_uri_equal(uri1, uri2); - purple_http_url_free(purl1); - purple_http_url_free(purl2); + soup_uri_free(uri1); + soup_uri_free(uri2); return ret; } |