# HG changeset patch # User John Bailey # Date 1243642070 0 # Node ID f303787f144d815129054a64492ff5e42ffcf764 # Parent fd7dc5cc0310c2a6eebf537f387ba251606ea01b Add yet another URL fetching function. This one takes an account as a parameter. It's needed because the Yahoo 16 code uses URL fetching as part of its login process, and without giving the account to purple_proxy_connect (which wass called in purple_util_fetch_url_request_len), we ignore account- specific proxy configurations. This is a bad thing, as evidenced by Adium's ticket 12231. In adding this function, I deprecated purple_util_fetch_url_request_len and made it a shell that calls this new function with a NULL account parameter. This maintains the previous behavior without a mountain of duplicated code. diff -r fd7dc5cc0310 -r f303787f144d libpurple/util.c --- a/libpurple/util.c Fri May 29 20:56:46 2009 +0000 +++ b/libpurple/util.c Sat May 30 00:07:50 2009 +0000 @@ -4008,7 +4008,7 @@ const char *request, gboolean include_headers, PurpleUtilFetchUrlCallback callback, void *user_data) { - return purple_util_fetch_url_request_len(url, full, + return purple_util_fetch_url_request_len_with_account(NULL, url, full, user_agent, http11, request, include_headers, -1, callback, user_data); @@ -4020,6 +4020,17 @@ const char *request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, void *user_data) { + return purple_util_fetch_url_request_len_with_account(NULL, url, full, + user_agent, http11, request, include_headers, max_len, callback, + user_data); +} + +PurpleUtilFetchUrlData * +purple_util_fetch_url_request_len_with_account(PurpleAccount *account, + const char *url, gboolean full, const char *user_agent, gboolean http11, + const char *request, gboolean include_headers, gssize max_len, + PurpleUtilFetchUrlCallback callback, void *user_data) +{ PurpleUtilFetchUrlData *gfud; g_return_val_if_fail(url != NULL, NULL); @@ -4057,11 +4068,11 @@ } gfud->is_ssl = TRUE; - gfud->ssl_connection = purple_ssl_connect(NULL, + gfud->ssl_connection = purple_ssl_connect(account, gfud->website.address, gfud->website.port, ssl_url_fetch_connect_cb, ssl_url_fetch_error_cb, gfud); } else { - gfud->connect_data = purple_proxy_connect(NULL, NULL, + gfud->connect_data = purple_proxy_connect(NULL, account, gfud->website.address, gfud->website.port, url_fetch_connect_cb, gfud); } diff -r fd7dc5cc0310 -r f303787f144d libpurple/util.h --- a/libpurple/util.h Fri May 29 20:56:46 2009 +0000 +++ b/libpurple/util.h Sat May 30 00:07:50 2009 +0000 @@ -1106,9 +1106,33 @@ * @param max_len The maximum number of bytes to retrieve (-1 for unlimited) * @param callback The callback function. * @param data The user data to pass to the callback function. + * @deprecated In 3.0.0, this will go away. + */ +PurpleUtilFetchUrlData *purple_util_fetch_url_request_len(const gchar *url, + gboolean full, const gchar *user_agent, gboolean http11, + const gchar *request, gboolean include_headers, gssize max_len, + PurpleUtilFetchUrlCallback callback, gpointer data); + +/** + * Fetches the data from a URL, and passes it to a callback function. + * + * @param account The account for which the request is needed, or NULL. + * @param url The URL. + * @param full TRUE if this is the full URL, or FALSE if it's a + * partial URL. + * @param user_agent The user agent field to use, or NULL. + * @param http11 TRUE if HTTP/1.1 should be used to download the file. + * @param request A HTTP request to send to the server instead of the + * standard GET + * @param include_headers + * If TRUE, include the HTTP headers in the response. + * @param max_len The maximum number of bytes to retrieve (-1 for unlimited) + * @param callback The callback function. + * @param data The user data to pass to the callback function. * @deprecated In 3.0.0, we'll rename this to "purple_util_fetch_url_request" and get rid of the old one */ -PurpleUtilFetchUrlData *purple_util_fetch_url_request_len(const gchar *url, +PurpleUtilFetchUrlData *purple_util_fetch_url_request_len_with_account( + PurpleAccount *account, const gchar *url, gboolean full, const gchar *user_agent, gboolean http11, const gchar *request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data);