Thu, 04 Jul 2013 21:57:33 +0200
HTTP: migrate purple_util_fetch_url_request to new API for yahoo prpl (completed)
--- a/libpurple/protocols/yahoo/libymsg.c Thu Jul 04 16:22:02 2013 +0200 +++ b/libpurple/protocols/yahoo/libymsg.c Thu Jul 04 21:57:33 2013 +0200 @@ -22,7 +22,6 @@ */ #include "internal.h" -#include "obsolete.h" #include "account.h" #include "accountopt.h" @@ -3682,10 +3681,6 @@ yd->inpa = 0; } - while (yd->url_datas) { - purple_util_fetch_url_cancel(yd->url_datas->data); - yd->url_datas = g_slist_delete_link(yd->url_datas, yd->url_datas); - } while (yd->http_reqs) { purple_http_conn_cancel(yd->http_reqs->data); yd->http_reqs = g_slist_delete_link(yd->http_reqs, yd->http_reqs); @@ -4078,6 +4073,8 @@ yahoo_doodle_initiate(gc, purple_buddy_get_name(b)); } +#if 0 +/* XXX: it doesn't seems to work */ static void yahoo_userinfo_blist_node(PurpleBlistNode *node, gpointer data) { @@ -4087,6 +4084,7 @@ yahoo_set_userinfo_for_buddy(gc, b); } +#endif static GList *yahoo_buddy_menu(PurpleBuddy *buddy) { @@ -4157,10 +4155,13 @@ m = g_list_append(m, act); } +#if 0 + /* XXX: it doesn't seems to work */ act = purple_menu_action_new(_("Set User Info..."), PURPLE_CALLBACK(yahoo_userinfo_blist_node), NULL, NULL); m = g_list_append(m, act); +#endif } return m; @@ -4188,33 +4189,34 @@ } static void -yahoo_get_inbox_token_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, - const gchar *token, size_t len, const gchar *error_message) +yahoo_get_inbox_token_cb(PurpleHttpConnection *http_conn, + PurpleHttpResponse *response, gpointer _unused) { - PurpleConnection *gc = user_data; - gboolean set_cookie = FALSE; + PurpleConnection *gc = + purple_http_conn_get_purple_connection(http_conn); gchar *url; YahooData *yd = purple_connection_get_protocol_data(gc); g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); - yd->url_datas = g_slist_remove(yd->url_datas, url_data); - - if (error_message != NULL) - purple_debug_error("yahoo", "Requesting mail login token failed: %s\n", error_message); - else if (len > 0 && token && *token) { - /* Should we not be hardcoding the rd url? */ + yd->http_reqs = g_slist_remove(yd->http_reqs, http_conn); + + if (!purple_http_response_is_successfull(response)) { + purple_debug_error("yahoo", + "Requesting mail login token failed: %s\n", + purple_http_response_get_error(response)); + url = g_strdup(yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL); + } else { + /* Should we not be hardcoding the rd url? */ + gchar *token; + token = g_strdup(purple_http_response_get_data(response, NULL)); + g_strstrip(token); url = g_strdup_printf( "http://login.yahoo.com/config/reset_cookies_token?" ".token=%s" - "&.done=http://us.rd.yahoo.com/messenger/client/%%3fhttp://mail.yahoo.com/", - token); - set_cookie = TRUE; - } - - if (!set_cookie) { - purple_debug_error("yahoo", "No mail login token; forwarding to login screen.\n"); - url = g_strdup(yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL); + "&.done=http://us.rd.yahoo.com/messenger/client/%%3f" + "http://mail.yahoo.com/", token); + purple_str_wipe(token); } /* Open the mailbox with the parsed url data */ @@ -4231,42 +4233,32 @@ PurpleConnection *gc = action->context; YahooData *yd = purple_connection_get_protocol_data(gc); - - PurpleUtilFetchUrlData *url_data; - const char* base_url = "http://login.yahoo.com"; - /* use whole URL if using HTTP Proxy */ - gboolean use_whole_url = yahoo_account_use_http_proxy(gc); - gchar *request = g_strdup_printf( - "POST %s/config/cookie_token HTTP/1.0\r\n" - "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s;\r\n" - "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n" - "Host: login.yahoo.com\r\n" - "Content-Length: 0\r\n\r\n", - use_whole_url ? base_url : "", - yd->cookie_t, yd->cookie_y); - - url_data = purple_util_fetch_url_request( - purple_connection_get_account(gc), base_url, use_whole_url, - YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1, - yahoo_get_inbox_token_cb, gc); - - g_free(request); - - if (url_data != NULL) - yd->url_datas = g_slist_prepend(yd->url_datas, url_data); - else { - const char *yahoo_mail_url = (yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL); - purple_debug_error("yahoo", - "Unable to request mail login token; forwarding to login screen."); - purple_notify_uri(gc, yahoo_mail_url); - } + PurpleHttpRequest *req; + PurpleHttpCookieJar *cookiejar; + PurpleHttpConnection *hc; + + req = purple_http_request_new( + "https://login.yahoo.com/config/cookie_token"); + purple_http_request_set_method(req, "POST"); + purple_http_request_header_set(req, "User-Agent", + YAHOO_CLIENT_USERAGENT); + cookiejar = purple_http_request_get_cookie_jar(req); + purple_http_cookie_jar_set(cookiejar, "T", yd->cookie_t); + purple_http_cookie_jar_set(cookiejar, "Y", yd->cookie_y); + hc = purple_http_request(gc, req, yahoo_get_inbox_token_cb, NULL); + purple_http_request_unref(req); + + yd->http_reqs = g_slist_prepend(yd->http_reqs, hc); } +#if 0 +/* XXX: it doesn't seems to work */ static void yahoo_set_userinfo_fn(PurplePluginAction *action) { yahoo_set_userinfo(action->context); } +#endif static void yahoo_show_act_id(PurplePluginAction *action) { @@ -4313,9 +4305,12 @@ GList *m = NULL; PurplePluginAction *act; +#if 0 + /* XXX: it doesn't seems to work */ act = purple_plugin_action_new(_("Set User Info..."), yahoo_set_userinfo_fn); m = g_list_append(m, act); +#endif act = purple_plugin_action_new(_("Activate ID..."), yahoo_show_act_id); @@ -4339,10 +4334,10 @@ char *what; }; -static void yahoo_get_sms_carrier_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, - const gchar *webdata, size_t len, const gchar *error_message) +static void yahoo_get_sms_carrier_cb(PurpleHttpConnection *http_conn, + PurpleHttpResponse *response, gpointer _sms_cb_data) { - struct yahoo_sms_carrier_cb_data *sms_cb_data = user_data; + struct yahoo_sms_carrier_cb_data *sms_cb_data = _sms_cb_data; PurpleConnection *gc = sms_cb_data->gc; YahooData *yd = purple_connection_get_protocol_data(gc); char *status = NULL; @@ -4350,18 +4345,18 @@ PurpleAccount *account = purple_connection_get_account(gc); PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms_cb_data->who, account); - yd->url_datas = g_slist_remove(yd->url_datas, url_data); - - if (error_message != NULL) { + yd->http_reqs = g_slist_remove(yd->http_reqs, http_conn); + + if (!purple_http_response_is_successfull(response)) { purple_conversation_write(conv, NULL, _("Can't send SMS. Unable to obtain mobile carrier."), PURPLE_MESSAGE_SYSTEM, time(NULL)); g_free(sms_cb_data->who); g_free(sms_cb_data->what); g_free(sms_cb_data); return ; - } - else if (len > 0 && webdata && *webdata) { - xmlnode *validate_data_root = xmlnode_from_str(webdata, -1); + } else { + const gchar *got_data = purple_http_response_get_data(response, NULL); + xmlnode *validate_data_root = xmlnode_from_str(got_data, -1); xmlnode *validate_data_child = xmlnode_get_child(validate_data_root, "mobile_no"); const char *mobile_no = xmlnode_get_attrib(validate_data_child, "msisdn"); @@ -4372,7 +4367,7 @@ validate_data_child = xmlnode_get_child(validate_data_root, "carrier"); carrier = xmlnode_get_data(validate_data_child); - purple_debug_info("yahoo", "SMS validate data: %s\n", webdata); + purple_debug_info("yahoo", "SMS validate data: %s\n", got_data); if (status && g_str_equal(status, "Valid")) { g_hash_table_insert(yd->sms_carrier, @@ -4400,11 +4395,11 @@ static void yahoo_get_sms_carrier(PurpleConnection *gc, gpointer data) { YahooData *yd = purple_connection_get_protocol_data(gc); - PurpleUtilFetchUrlData *url_data; + PurpleHttpRequest *req; + PurpleHttpCookieJar *cookiejar; + PurpleHttpConnection *hc; struct yahoo_sms_carrier_cb_data *sms_cb_data; char *validate_request_str = NULL; - char *request = NULL; - gboolean use_whole_url = FALSE; xmlnode *validate_request_root = NULL; xmlnode *validate_request_child = NULL; @@ -4424,37 +4419,22 @@ xmlnode_free(validate_request_child); xmlnode_free(validate_request_root); - request = g_strdup_printf( - "POST /mobileno?intl=us&version=%s HTTP/1.1\r\n" - "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s; path=/; domain=.yahoo.com;\r\n" - "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n" - "Host: validate.msg.yahoo.com\r\n" - "Content-Length: %" G_GSIZE_FORMAT "\r\n" - "Cache-Control: no-cache\r\n\r\n%s", - YAHOO_CLIENT_VERSION, yd->cookie_t, yd->cookie_y, strlen(validate_request_str), validate_request_str); - - /* use whole URL if using HTTP Proxy */ - if ((purple_account_get_proxy_info(purple_connection_get_account(gc))) && (purple_proxy_info_get_type(purple_account_get_proxy_info(purple_connection_get_account(gc))) == PURPLE_PROXY_HTTP)) - use_whole_url = TRUE; - - url_data = purple_util_fetch_url_request( - purple_connection_get_account(gc), YAHOO_SMS_CARRIER_URL, use_whole_url, - YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1, - yahoo_get_sms_carrier_cb, data); - - g_free(request); + req = purple_http_request_new(NULL); + purple_http_request_set_url_printf(req, "http://validate.msg.yahoo.com" + "/mobileno?intl=us&version=%s", YAHOO_CLIENT_VERSION); + purple_http_request_set_method(req, "POST"); + purple_http_request_header_set(req, "User-Agent", + YAHOO_CLIENT_USERAGENT); + cookiejar = purple_http_request_get_cookie_jar(req); + purple_http_cookie_jar_set(cookiejar, "T", yd->cookie_t); + purple_http_cookie_jar_set(cookiejar, "Y", yd->cookie_y); + purple_http_request_set_contents(req, validate_request_str, -1); + hc = purple_http_request(gc, req, yahoo_get_sms_carrier_cb, data); + purple_http_request_unref(req); + + yd->http_reqs = g_slist_prepend(yd->http_reqs, hc); + g_free(validate_request_str); - - if (url_data) - yd->url_datas = g_slist_prepend(yd->url_datas, url_data); - else { - PurpleAccount *account = purple_connection_get_account(gc); - PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, sms_cb_data->who, account); - purple_conversation_write(conv, NULL, _("Can't send SMS. Unable to obtain mobile carrier."), PURPLE_MESSAGE_SYSTEM, time(NULL)); - g_free(sms_cb_data->who); - g_free(sms_cb_data->what); - g_free(sms_cb_data); - } } int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what, PurpleMessageFlags flags)
--- a/libpurple/protocols/yahoo/libymsg.h Thu Jul 04 16:22:02 2013 +0200 +++ b/libpurple/protocols/yahoo/libymsg.h Thu Jul 04 21:57:33 2013 +0200 @@ -245,9 +245,6 @@ */ GSList *http_reqs; - /* TODO: remove it */ - GSList *url_datas; - GHashTable *xfer_peer_idstring_map;/* Hey, i dont know, but putting this HashTable next to friends gives a run time fault... */ GSList *cookies;/* contains all cookies, including _y and _t */ PurpleNetworkListenData *listen_data;
--- a/libpurple/protocols/yahoo/yahoo_aliases.c Thu Jul 04 16:22:02 2013 +0200 +++ b/libpurple/protocols/yahoo/yahoo_aliases.c Thu Jul 04 21:57:33 2013 +0200 @@ -23,7 +23,6 @@ #include "internal.h" -#include "obsolete.h" #include "account.h" #include "accountopt.h" @@ -73,28 +72,38 @@ **************************************************************************/ static void -yahoo_fetch_aliases_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message) +yahoo_fetch_aliases_cb(PurpleHttpConnection *http_conn, + PurpleHttpResponse *response, gpointer _unused) { - PurpleConnection *gc = user_data; + PurpleConnection *gc = + purple_http_conn_get_purple_connection(http_conn); YahooData *yd = purple_connection_get_protocol_data(gc); - yd->url_datas = g_slist_remove(yd->url_datas, url_data); + yd->http_reqs = g_slist_remove(yd->http_reqs, http_conn); - if (len == 0) { - purple_debug_info("yahoo", "No Aliases to process.%s%s\n", - error_message ? " Error:" : "", error_message ? error_message : ""); + if (!purple_http_response_is_successfull(response)) { + purple_debug_info("yahoo", "yahoo_fetch_aliases_cb error: %s\n", + purple_http_response_get_error(response)); } else { gchar *full_name, *nick_name; + const gchar *xml_raw; const char *yid, *id, *fn, *ln, *nn, *alias, *mn; const char *hp, *wp, *mo; YahooFriend *f; PurpleBuddy *b; xmlnode *item, *contacts; PurpleAccount *account; + size_t len; account = purple_connection_get_account(gc); /* Put our web response into a xmlnode for easy management */ - contacts = xmlnode_from_str(url_text, -1); + xml_raw = purple_http_response_get_data(response, &len); + contacts = xmlnode_from_str(xml_raw, -1); + + if (purple_debug_is_verbose()) { + purple_debug_misc("yahoo", + "yahoo_fetch_aliases_cb xml:[%s]\n", xml_raw); + } if (contacts == NULL) { purple_debug_error("yahoo", "Badly formed Alias XML\n"); @@ -189,37 +198,22 @@ yahoo_fetch_aliases(PurpleConnection *gc) { YahooData *yd = purple_connection_get_protocol_data(gc); - const char *url; - gchar *request; - PurpleUtilFetchUrlData *url_data; - PurpleHttpURL *url_p; - - /* use whole URL if using HTTP Proxy */ - gboolean use_whole_url = yahoo_account_use_http_proxy(gc); - - /* Build all the info to make the web request */ - url = yd->jp ? YAHOOJP_ALIAS_FETCH_URL : YAHOO_ALIAS_FETCH_URL; - url_p = purple_http_url_parse(url); - g_assert(url_p != NULL); + PurpleHttpRequest *req; + PurpleHttpConnection *hc; + PurpleHttpCookieJar *cookiejar; - request = g_strdup_printf("GET %s%s%s HTTP/1.1\r\n" - "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n" - "Cookie: T=%s; Y=%s\r\n" - "Host: %s\r\n" - "Cache-Control: no-cache\r\n\r\n", - use_whole_url ? "http://" : "", use_whole_url ? purple_http_url_get_host(url_p) : "", purple_http_url_get_path(url_p), - yd->cookie_t, yd->cookie_y, - purple_http_url_get_host(url_p)); + req = purple_http_request_new(yd->jp ? YAHOOJP_ALIAS_FETCH_URL : + YAHOO_ALIAS_FETCH_URL); + /* XXX: see the other note about user-agent */ + purple_http_request_header_set(req, "User-Agent", + "Mozilla/4.0 (compatible; MSIE 5.5)"); + cookiejar = purple_http_request_get_cookie_jar(req); + purple_http_cookie_jar_set(cookiejar, "T", yd->cookie_t); + purple_http_cookie_jar_set(cookiejar, "Y", yd->cookie_y); + hc = purple_http_request(gc, req, yahoo_fetch_aliases_cb, NULL); + purple_http_request_unref(req); - /* We have a URL and some header information, let's connect and get some aliases */ - url_data = purple_util_fetch_url_request(purple_connection_get_account(gc), - url, use_whole_url, NULL, TRUE, request, FALSE, -1, - yahoo_fetch_aliases_cb, gc); - if (url_data != NULL) - yd->url_datas = g_slist_prepend(yd->url_datas, url_data); - - purple_http_url_free(url_p); - g_free(request); + yd->http_reqs = g_slist_prepend(yd->http_reqs, hc); } /************************************************************************** @@ -227,27 +221,28 @@ **************************************************************************/ static void -yahoo_update_alias_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message) +yahoo_update_alias_cb(PurpleHttpConnection *http_conn, + PurpleHttpResponse *response, gpointer _cb) { xmlnode *node, *result; - struct callback_data *cb = user_data; + struct callback_data *cb = _cb; PurpleConnection *gc = cb->gc; YahooData *yd; yd = purple_connection_get_protocol_data(gc); - yd->url_datas = g_slist_remove(yd->url_datas, url_data); + yd->http_reqs = g_slist_remove(yd->http_reqs, http_conn); - if (len == 0 || error_message != NULL) { + if (!purple_http_response_is_successfull(response)) { purple_debug_info("yahoo", "Error updating alias for %s: %s\n", - cb->who, - error_message ? error_message : ""); + cb->who, purple_http_response_get_error(response)); g_free(cb->who); g_free(cb->id); g_free(cb); return; } - result = xmlnode_from_str(url_text, -1); + result = xmlnode_from_str( + purple_http_response_get_data(response, NULL), -1); if (result == NULL) { purple_debug_error("yahoo", "Alias update for %s failed: Badly formed response\n", @@ -293,15 +288,13 @@ void yahoo_update_alias(PurpleConnection *gc, const char *who, const char *alias) { + PurpleHttpRequest *req; + PurpleHttpConnection *hc; + PurpleHttpCookieJar *cookiejar; YahooData *yd; - const char *url; - gchar *content, *request; + gchar *content; struct callback_data *cb; - PurpleUtilFetchUrlData *url_data; - PurpleHttpURL *url_p; YahooFriend *f; - /* use whole URL if using HTTP Proxy */ - gboolean use_whole_url = yahoo_account_use_http_proxy(gc); g_return_if_fail(who != NULL); g_return_if_fail(gc != NULL); @@ -323,12 +316,6 @@ cb->id = g_strdup(yahoo_friend_get_alias_id(f)); cb->gc = gc; - /* Build all the info to make the web request */ - url = yd->jp ? YAHOOJP_ALIAS_UPDATE_URL: YAHOO_ALIAS_UPDATE_URL; - - url_p = purple_http_url_parse(url); - g_assert(url_p != NULL); - if (cb->id == NULL) { /* No id for this buddy, so create an address book entry */ purple_debug_info("yahoo", "Creating '%s' as new alias for user '%s'\n", alias, who); @@ -372,29 +359,24 @@ } } - request = g_strdup_printf("POST %s%s%s HTTP/1.1\r\n" - "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n" - "Cookie: T=%s; Y=%s\r\n" - "Host: %s\r\n" - "Content-Length: %" G_GSIZE_FORMAT "\r\n" - "Cache-Control: no-cache\r\n\r\n" - "%s", - use_whole_url ? "http://" : "", use_whole_url ? purple_http_url_get_host(url_p) : "", purple_http_url_get_path(url_p), - yd->cookie_t, yd->cookie_y, - purple_http_url_get_host(url_p), - strlen(content), - content); + req = purple_http_request_new(yd->jp ? YAHOOJP_ALIAS_UPDATE_URL: + YAHOO_ALIAS_UPDATE_URL); + purple_http_request_set_method(req, "POST"); + /* XXX: We get rs="ERROR:-100:No Login", when we set + * YAHOO_CLIENT_USERAGENT (Mozilla/5.0) here. + */ + purple_http_request_header_set(req, "User-Agent", + "Mozilla/4.0 (compatible; MSIE 5.5)"); + cookiejar = purple_http_request_get_cookie_jar(req); + purple_http_cookie_jar_set(cookiejar, "T", yd->cookie_t); + purple_http_cookie_jar_set(cookiejar, "Y", yd->cookie_y); + purple_http_request_set_contents(req, content, -1); + hc = purple_http_request(gc, req, yahoo_update_alias_cb, cb); + purple_http_request_unref(req); - /* We have a URL and some header information, let's connect and update the alias */ - url_data = purple_util_fetch_url_request( - purple_connection_get_account(gc), url, use_whole_url, NULL, TRUE, - request, FALSE, -1, yahoo_update_alias_cb, cb); - if (url_data != NULL) - yd->url_datas = g_slist_prepend(yd->url_datas, url_data); + yd->http_reqs = g_slist_prepend(yd->http_reqs, hc); - purple_http_url_free(url_p); g_free(content); - g_free(request); } @@ -456,19 +438,18 @@ static void yahoo_set_userinfo_cb(PurpleConnection *gc, PurpleRequestFields *fields) { + PurpleHttpRequest *req; + PurpleHttpConnection *hc; + PurpleHttpCookieJar *cookiejar; + xmlnode *node = xmlnode_new("ab"); xmlnode *ct = xmlnode_new_child(node, "ct"); YahooData *yd = purple_connection_get_protocol_data(gc); - PurpleAccount *account; - PurpleUtilFetchUrlData *url_data; - PurpleHttpURL *url_p; - char *request, *content; + char *content; int len; int i; char * yfields[] = { "fn", "ln", "nn", "mn", "hp", "wp", "mo", NULL }; - account = purple_connection_get_account(gc); - xmlnode_set_attrib(node, "k", purple_connection_get_display_name(gc)); xmlnode_set_attrib(node, "cc", "1"); /* XXX: ? */ @@ -485,22 +466,6 @@ content = xmlnode_to_formatted_str(node, &len); xmlnode_free(node); - url_p = purple_http_url_parse(yd->jp ? YAHOOJP_USERINFO_URL : YAHOO_USERINFO_URL); - g_assert(url_p != NULL); - - request = g_strdup_printf("POST %s HTTP/1.1\r\n" - "User-Agent: " YAHOO_CLIENT_USERAGENT "\r\n" - "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s;\r\n" - "Host: %s\r\n" - "Content-Length: %d\r\n" - "Cache-Control: no-cache\r\n\r\n" - "%s\r\n\r\n", - purple_http_url_get_path(url_p), - yd->cookie_t, yd->cookie_y, - purple_http_url_get_host(url_p), - len + 4, - content); - #if 0 { /* This is if we wanted to send our contact details to everyone @@ -525,15 +490,22 @@ } #endif - url_data = purple_util_fetch_url_request(account, purple_http_url_get_host(url_p), FALSE, - YAHOO_CLIENT_USERAGENT, TRUE, request, FALSE, -1, - yahoo_fetch_aliases_cb, gc); - if (url_data != NULL) - yd->url_datas = g_slist_prepend(yd->url_datas, url_data); + req = purple_http_request_new(yd->jp ? YAHOOJP_USERINFO_URL : + YAHOO_USERINFO_URL); + purple_http_request_set_method(req, "POST"); + /* XXX: see the previous comment for user-agent */ + purple_http_request_header_set(req, "User-Agent", + "Mozilla/4.0 (compatible; MSIE 5.5)"); + cookiejar = purple_http_request_get_cookie_jar(req); + purple_http_cookie_jar_set(cookiejar, "T", yd->cookie_t); + purple_http_cookie_jar_set(cookiejar, "Y", yd->cookie_y); + purple_http_request_set_contents(req, content, -1); + hc = purple_http_request(gc, req, yahoo_fetch_aliases_cb, NULL); + purple_http_request_unref(req); - purple_http_url_free(url_p); + yd->http_reqs = g_slist_prepend(yd->http_reqs, hc); + g_free(content); - g_free(request); } static PurpleRequestFields * @@ -558,6 +530,13 @@ {NULL, NULL, NULL} }; + if (ypd->id == NULL) { + purple_debug_error("yahoo", + "request_fields_from_personal_details:" + "ypd->id == NULL (it doesn't seems to work)\n"); + return NULL; + } + fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); @@ -591,6 +570,8 @@ return; fields = request_fields_from_personal_details(&f->ypd, name); + if (fields == NULL) + return; purple_request_fields(gc, NULL, _("Set User Info"), NULL, fields, _("OK"), G_CALLBACK(yahoo_set_userinfo_cb), _("Cancel"), NULL, @@ -602,6 +583,8 @@ YahooData *yd = purple_connection_get_protocol_data(gc); PurpleRequestFields *fields = request_fields_from_personal_details(&yd->ypd, purple_connection_get_display_name(gc)); + if (fields == NULL) + return; purple_request_fields(gc, NULL, _("Set User Info"), NULL, fields, _("OK"), G_CALLBACK(yahoo_set_userinfo_cb), _("Cancel"), NULL,