cpw.qulogic.msnp16: ae093be5: Also parse extended capabilities from IL...
qulogic at pidgin.im
qulogic at pidgin.im
Mon Dec 14 02:27:52 EST 2009
-----------------------------------------------------------------
Revision: ae093be5fdd4311e82faf775ce3c3690f0a7df65
Ancestor: 1c5849f7066d108991ae559313b4261db4a4f990
Author: qulogic at pidgin.im
Date: 2009-12-10T08:01:42
Branch: im.pidgin.cpw.qulogic.msnp16
URL: http://d.pidgin.im/viewmtn/revision/info/ae093be5fdd4311e82faf775ce3c3690f0a7df65
Modified files:
libpurple/protocols/msn/notification.c
ChangeLog:
Also parse extended capabilities from ILN. Probably don't need to do so in
all the cases, but it shouldn't hurt any, I hope.
-------------- next part --------------
============================================================
--- libpurple/protocols/msn/notification.c 20ded334d81b9ff5f3dfcca86c58d4e14ef6d302
+++ libpurple/protocols/msn/notification.c c965d4d232f0da3172a8f0506d7c910972a3eaf2
@@ -1088,7 +1088,8 @@ iln_cmd(MsnCmdProc *cmdproc, MsnCommand
PurpleConnection *gc;
MsnUser *user;
MsnObject *msnobj = NULL;
- unsigned long clientid;
+ unsigned long clientid, extcaps;
+ char *extcap_str;
int networkid = 0;
const char *state, *passport;
char *friendly;
@@ -1109,7 +1110,11 @@ iln_cmd(MsnCmdProc *cmdproc, MsnCommand
/* Yahoo! Buddy, looks like */
networkid = atoi(cmd->params[3]);
friendly = g_strdup(purple_url_decode(cmd->params[4]));
- clientid = strtoul(cmd->params[5], NULL, 10);
+ clientid = strtoul(cmd->params[5], &extcap_str, 10);
+ if (session->protocol_ver >= 16 && extcap_str && *extcap_str)
+ extcaps = strtoul(extcap_str+1, NULL, 10);
+ else
+ extcaps = 0;
/* cmd->params[7] seems to be a URL to a Yahoo! icon:
https://sec.yimg.com/i/us/nt/b/purpley.1.0.png
@@ -1119,7 +1124,11 @@ iln_cmd(MsnCmdProc *cmdproc, MsnCommand
/* MSNP14+ with Display Picture object */
networkid = atoi(cmd->params[3]);
friendly = g_strdup(purple_url_decode(cmd->params[4]));
- clientid = strtoul(cmd->params[5], NULL, 10);
+ clientid = strtoul(cmd->params[5], &extcap_str, 10);
+ if (session->protocol_ver >= 16 && extcap_str && *extcap_str)
+ extcaps = strtoul(extcap_str+1, NULL, 10);
+ else
+ extcaps = 0;
msnobj = msn_object_new_from_string(purple_url_decode(cmd->params[6]));
} else if (cmd->param_count == 6) {
/* Yes, this is 5. The friendly name could start with a number,
@@ -1128,17 +1137,29 @@ iln_cmd(MsnCmdProc *cmdproc, MsnCommand
/* MSNP14 without Display Picture object */
networkid = atoi(cmd->params[3]);
friendly = g_strdup(purple_url_decode(cmd->params[4]));
- clientid = strtoul(cmd->params[5], NULL, 10);
+ clientid = strtoul(cmd->params[5], &extcap_str, 10);
+ if (session->protocol_ver >= 16 && extcap_str && *extcap_str)
+ extcaps = strtoul(extcap_str+1, NULL, 10);
+ else
+ extcaps = 0;
} else {
/* MSNP8+ with Display Picture object */
friendly = g_strdup(purple_url_decode(cmd->params[3]));
- clientid = strtoul(cmd->params[4], NULL, 10);
+ clientid = strtoul(cmd->params[4], &extcap_str, 10);
+ if (session->protocol_ver >= 16 && extcap_str && *extcap_str)
+ extcaps = strtoul(extcap_str+1, NULL, 10);
+ else
+ extcaps = 0;
msnobj = msn_object_new_from_string(purple_url_decode(cmd->params[5]));
}
} else if (cmd->param_count == 5) {
/* MSNP8+ without Display Picture object */
friendly = g_strdup(purple_url_decode(cmd->params[3]));
- clientid = strtoul(cmd->params[4], NULL, 10);
+ clientid = strtoul(cmd->params[4], &extcap_str, 10);
+ if (session->protocol_ver >= 16 && extcap_str && *extcap_str)
+ extcaps = strtoul(extcap_str+1, NULL, 10);
+ else
+ extcaps = 0;
} else {
purple_debug_warning("msn", "Received ILN with unknown number of parameters.\n");
return;
@@ -1153,6 +1174,7 @@ iln_cmd(MsnCmdProc *cmdproc, MsnCommand
user->mobile = (clientid & MSN_CLIENT_CAP_MSNMOBILE) || (user->phone.mobile && user->phone.mobile[0] == '+');
msn_user_set_clientid(user, clientid);
+ msn_user_set_extcaps(user, extcaps);
msn_user_set_network(user, networkid);
msn_user_set_state(user, state);
More information about the Commits
mailing list