Mercurial > pidgin.yaz
diff libpurple/protocols/yahoo/libymsg.c @ 28435:4a2adf413aaa
merged with im.pidgin.pidgin
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 24 Aug 2009 17:20:46 +0900 |
parents | 63d8b9b93cba ea6e571ebe4d |
children | 336d03cdced6 |
line wrap: on
line diff
--- a/libpurple/protocols/yahoo/libymsg.c Wed Aug 19 16:19:45 2009 +0900 +++ b/libpurple/protocols/yahoo/libymsg.c Mon Aug 24 17:20:46 2009 +0900 @@ -1845,11 +1845,12 @@ PurpleAccount *account = purple_connection_get_account(gc); char *url = NULL; gboolean yahoojp = yahoo_is_japan(account); + gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE); url = g_strdup_printf(yahoojp ? YAHOOJP_LOGIN_URL : YAHOO_LOGIN_URL, token); - url_data = purple_util_fetch_url_request_len_with_account(account, url, - TRUE, YAHOO_CLIENT_USERAGENT, TRUE, NULL, FALSE, -1, - yahoo_auth16_stage2, auth_data); + url_data = purple_util_fetch_url_request_len_with_account( + proxy_ssl ? account : NULL, url, TRUE, YAHOO_CLIENT_USERAGENT, + TRUE, NULL, FALSE, -1, yahoo_auth16_stage2, auth_data); g_free(url); g_free(token); } @@ -1858,12 +1859,14 @@ static void yahoo_auth16_stage1(PurpleConnection *gc, const char *seed) { + PurpleAccount *account = purple_connection_get_account(gc); PurpleUtilFetchUrlData *url_data = NULL; struct yahoo_auth_data *auth_data = NULL; char *url = NULL; char *encoded_username; char *encoded_password; - gboolean yahoojp; + gboolean yahoojp = yahoo_is_japan(account); + gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE); purple_debug_info("yahoo", "Authentication: In yahoo_auth16_stage1\n"); @@ -1872,7 +1875,6 @@ return; } - yahoojp = yahoo_is_japan(purple_connection_get_account(gc)); auth_data = g_new0(struct yahoo_auth_data, 1); auth_data->gc = gc; auth_data->seed = g_strdup(seed); @@ -1885,7 +1887,7 @@ g_free(encoded_username); url_data = purple_util_fetch_url_request_len_with_account( - purple_connection_get_account(gc), url, TRUE, + proxy_ssl ? account : NULL, url, TRUE, YAHOO_CLIENT_USERAGENT, TRUE, NULL, FALSE, -1, yahoo_auth16_stage1_cb, auth_data); @@ -2083,21 +2085,24 @@ if (!purple_account_get_remember_password(account)) purple_account_set_password(account, NULL); - msg = g_strdup(_("Incorrect password")); + msg = g_strdup(_("Invalid username or password")); reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; break; case 14: - msg = g_strdup(_("Your account is locked, please log in to the Yahoo! website.")); + msg = g_strdup(_("Your account has been locked due to too many failed login attempts." + " Please try logging into the Yahoo! website.")); reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED; break; case 52: /* See #9660. As much as we know, reconnecting shouldn't hurt */ purple_debug_info("yahoo", "Got error 52, Set to autoreconnect\n"); - msg = g_strdup_printf(_("Unknown error")); + msg = g_strdup_printf(_("Unknown error 52. Reconnecting should fix this.")); reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; break; case 1013: - msg = g_strdup(_("Invalid username")); + msg = g_strdup(_("Error 1013: The username you have entered is invalid." + " The most common cause of this error is entering your e-mail" + " address instead of your Yahoo! ID.")); reason = PURPLE_CONNECTION_ERROR_INVALID_USERNAME; break; default: @@ -4501,8 +4506,6 @@ if (purple_presence_is_idle(presence)) yahoo_packet_hash_str(pkt, 47, "2"); - else if (!purple_status_is_available(status)) - yahoo_packet_hash_str(pkt, 47, "1"); yahoo_packet_send_and_free(pkt, yd); @@ -4523,6 +4526,7 @@ struct yahoo_packet *pkt = NULL; char *msg = NULL, *msg2 = NULL; PurpleStatus *status = NULL; + gboolean invisible = FALSE; gboolean utf8 = TRUE; if (idle && yd->current_status != YAHOO_STATUS_CUSTOM) @@ -4532,9 +4536,15 @@ yd->current_status = get_yahoo_status_from_purple_status(status); } + invisible = !( purple_presence_is_available(purple_account_get_presence(purple_connection_get_account(gc))) ); + pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, yd->session_id); - yahoo_packet_hash_int(pkt, 10, yd->current_status); + if (!idle && invisible) + yahoo_packet_hash_int(pkt, 10, YAHOO_STATUS_AVAILABLE); + else + yahoo_packet_hash_int(pkt, 10, yd->current_status); + if (yd->current_status == YAHOO_STATUS_CUSTOM) { const char *tmp; if (status == NULL) @@ -4557,8 +4567,6 @@ if (idle) yahoo_packet_hash_str(pkt, 47, "2"); - else if (!purple_presence_is_available(purple_account_get_presence(purple_connection_get_account(gc)))) - yahoo_packet_hash_str(pkt, 47, "1"); yahoo_packet_send_and_free(pkt, yd);