pidgin: 466621b1: Fold the ADL 241 error handler into the ...
qulogic at pidgin.im
qulogic at pidgin.im
Fri Oct 30 02:55:57 EDT 2009
-----------------------------------------------------------------
Revision: 466621b1494b45efe11f835ff3cb5a647d1da7b6
Ancestor: 66bebc1164ed1151d970f4bc4e634005b2e28b0a
Author: qulogic at pidgin.im
Date: 2009-10-30T02:50:07
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/466621b1494b45efe11f835ff3cb5a647d1da7b6
Modified files:
libpurple/protocols/msn/notification.c
ChangeLog:
Fold the ADL 241 error handler into the base ADL error handler since it
technically would catch any "241" regardless of whether it was triggered by
an ADL.
-------------- next part --------------
============================================================
--- libpurple/protocols/msn/notification.c 80512791a9fc80131a38d0dc385ce13db370c8fb
+++ libpurple/protocols/msn/notification.c 71f8d1c7c22302cc663d62ed5c1372e994a2d759
@@ -840,17 +840,48 @@ adl_error_parse(MsnCmdProc *cmdproc, Msn
MsnSession *session;
PurpleAccount *account;
PurpleConnection *gc;
- char *adl = g_strndup(payload, len);
- char *reason = g_strdup_printf(_("Unknown error (%d): %s"),
- GPOINTER_TO_INT(cmd->payload_cbdata), adl);
- g_free(adl);
+ int error = GPOINTER_TO_INT(cmd->payload_cbdata);
session = cmdproc->session;
account = session->account;
gc = purple_account_get_connection(account);
- purple_notify_error(gc, NULL, _("Unable to add user"), reason);
- g_free(reason);
+ if (error == 241) {
+ /* khc: some googling suggests that error 241 means the buddy is somehow
+ in the local list, but not the server list, and that we should add
+ those buddies to the addressbook. For now I will just notify the user
+ about the raw payload, because I am lazy */
+ xmlnode *adl = xmlnode_from_str(payload, len);
+ GString *emails = g_string_new(NULL);
+
+ xmlnode *domain = xmlnode_get_child(adl, "d");
+ while (domain) {
+ const char *domain_str = xmlnode_get_attrib(domain, "n");
+ xmlnode *contact = xmlnode_get_child(domain, "c");
+ while (contact) {
+ g_string_append_printf(emails, "%s@%s\n",
+ xmlnode_get_attrib(contact, "n"), domain_str);
+ contact = xmlnode_get_next_twin(contact);
+ }
+ domain = xmlnode_get_next_twin(domain);
+ }
+
+ purple_notify_error(gc, NULL,
+ _("The following users are missing from your addressbook"),
+ emails->str);
+ g_string_free(emails, TRUE);
+ xmlnode_free(adl);
+ }
+ else
+ {
+ char *adl = g_strndup(payload, len);
+ char *reason = g_strdup_printf(_("Unknown error (%d): %s"),
+ error, adl);
+ g_free(adl);
+
+ purple_notify_error(gc, NULL, _("Unable to add user"), reason);
+ g_free(reason);
+ }
}
static void
@@ -878,53 +909,6 @@ static void
}
static void
-adl_241_error_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
- size_t len)
-{
- /* khc: some googling suggests that error 241 means the buddy is somehow
- in the local list, but not the server list, and that we should add
- those buddies to the addressbook. For now I will just notify the user
- about the raw payload, because I am lazy */
- MsnSession *session;
- PurpleAccount *account;
- PurpleConnection *gc;
- xmlnode *adl;
- xmlnode *domain;
- GString *emails;
-
- session = cmdproc->session;
- account = session->account;
- gc = purple_account_get_connection(account);
-
- adl = xmlnode_from_str(payload, len);
- emails = g_string_new(NULL);
-
- domain = xmlnode_get_child(adl, "d");
- while (domain) {
- const char *domain_str = xmlnode_get_attrib(domain, "n");
- xmlnode *contact = xmlnode_get_child(domain, "c");
- while (contact) {
- g_string_append_printf(emails, "%s@%s\n",
- xmlnode_get_attrib(contact, "n"), domain_str);
- contact = xmlnode_get_next_twin(contact);
- }
- domain = xmlnode_get_next_twin(domain);
- }
-
- purple_notify_error(gc, NULL,
- _("The following users are missing from your addressbook"), emails->str);
- g_string_free(emails, TRUE);
- xmlnode_free(adl);
-}
-
-static void
-adl_241_error_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
-{
- cmdproc->last_cmd->payload_cb = adl_241_error_cmd_post;
- cmd->payload_len = atoi(cmd->params[1]);
-}
-
-static void
fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
size_t len)
{
@@ -2095,8 +2079,6 @@ msn_notification_init(void)
msn_table_add_cmd(cbs_table, "fallback", "XFR", xfr_cmd);
- msn_table_add_cmd(cbs_table, NULL, "241", adl_241_error_cmd);
-
msn_table_add_error(cbs_table, "ADL", adl_error);
msn_table_add_error(cbs_table, "FQY", fqy_error);
msn_table_add_error(cbs_table, "USR", usr_error);
More information about the Commits
mailing list