Mercurial > pidgin
changeset 22091:02fc6697f38c
From what little I could see, it appears that for Yahoo Japan there is only
one valid roomlist URL and locale, so make it work instead of forcing users
to edit their accounts.xml to change the setting from the default. This
should fix #1369 without breaking anything. It also has the side effect of
(in my opinion) cleaning the code up a bit.
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Sun, 13 Jan 2008 01:00:29 +0000 |
parents | 8c1d618e10e0 |
children | 028128f35e41 |
files | libpurple/protocols/yahoo/yahoo.h libpurple/protocols/yahoo/yahoochat.c |
diffstat | 2 files changed, 20 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/yahoo/yahoo.h Sun Jan 13 00:19:23 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoo.h Sun Jan 13 01:00:29 2008 +0000 @@ -48,6 +48,8 @@ /*not sure, must test:*/ #define YAHOOJP_XFER_RELAY_HOST "relay.msg.yahoo.com" #define YAHOOJP_XFER_RELAY_PORT 80 +#define YAHOOJP_ROOMLIST_URL "http://insider.msg.yahoo.co.jp/ycontent/" +#define YAHOOJP_ROOMLIST_LOCALE "ja" #define YAHOO_AUDIBLE_URL "http://us.dl1.yimg.com/download.yahoo.com/dl/aud"
--- a/libpurple/protocols/yahoo/yahoochat.c Sun Jan 13 00:19:23 2008 +0000 +++ b/libpurple/protocols/yahoo/yahoochat.c Sun Jan 13 01:00:29 2008 +0000 @@ -1461,28 +1461,30 @@ PurpleRoomlist *yahoo_roomlist_get_list(PurpleConnection *gc) { - struct yahoo_roomlist *yrl; + PurpleAccount *account; PurpleRoomlist *rl; - const char *rll; + PurpleRoomlistField *f; + GList *fields = NULL; + struct yahoo_roomlist *yrl; + const char *rll, *rlurl; char *url; - GList *fields = NULL; - PurpleRoomlistField *f; - rll = purple_account_get_string(purple_connection_get_account(gc), - "room_list_locale", YAHOO_ROOMLIST_LOCALE); + account = purple_connection_get_account(gc); - if (rll != NULL && *rll != '\0') { - url = g_strdup_printf("%s?chatcat=0&intl=%s", - purple_account_get_string(purple_connection_get_account(gc), - "room_list", YAHOO_ROOMLIST_URL), rll); - } else { - url = g_strdup_printf("%s?chatcat=0", - purple_account_get_string(purple_connection_get_account(gc), - "room_list", YAHOO_ROOMLIST_URL)); + /* for Yahoo Japan, it appears there is only one valid URL and locale */ + if(purple_account_get_bool(account, "yahoojp", FALSE)) { + rll = YAHOOJP_ROOMLIST_LOCALE; + rlurl = YAHOOJP_ROOMLIST_URL; + } + else { /* but for the rest of the world that isn't the case */ + rll = purple_account_get_string(account, "room_list_locale", YAHOO_ROOMLIST_LOCALE); + rlurl = purple_account_get_string(account, "room_list", YAHOO_ROOMLIST_URL); } + url = g_strdup_printf("%s?chatcat=0&intl=%s", rlurl, rll); + yrl = g_new0(struct yahoo_roomlist, 1); - rl = purple_roomlist_new(purple_connection_get_account(gc)); + rl = purple_roomlist_new(account); yrl->list = rl; purple_url_parse(url, &(yrl->host), NULL, &(yrl->path), NULL, NULL); @@ -1508,7 +1510,7 @@ purple_roomlist_set_fields(rl, fields); - if (purple_proxy_connect(NULL, purple_connection_get_account(gc), yrl->host, 80, + if (purple_proxy_connect(NULL, account, yrl->host, 80, yahoo_roomlist_got_connected, yrl) == NULL) { purple_notify_error(gc, NULL, _("Connection problem"), _("Unable to fetch room list."));