comparison libpurple/protocols/msn/notification.c @ 32485:d1ac0c771e19

Fix UBX on MSNP18.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 03 Feb 2012 01:26:14 +0000
parents 2ec94166be43
children 1a265986ed37
comparison
equal deleted inserted replaced
32484:0ab12023a1bc 32485:d1ac0c771e19
1703 ubx_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, 1703 ubx_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
1704 size_t len) 1704 size_t len)
1705 { 1705 {
1706 MsnSession *session; 1706 MsnSession *session;
1707 MsnUser *user; 1707 MsnUser *user;
1708 const char *passport; 1708 char *passport;
1709 int network;
1709 xmlnode *payloadNode; 1710 xmlnode *payloadNode;
1710 char *psm_str, *str; 1711 char *psm_str, *str;
1711 1712
1712 session = cmdproc->session; 1713 session = cmdproc->session;
1713 1714
1714 passport = cmd->params[0]; 1715 if (session->protocol_ver >= 18) {
1716 str = cmd->params[0];
1717 msn_parse_user(str, &passport, &network);
1718 } else {
1719 passport = cmd->params[0];
1720 }
1715 user = msn_userlist_find_user(session->userlist, passport); 1721 user = msn_userlist_find_user(session->userlist, passport);
1716 if (user == NULL) { 1722 if (user == NULL) {
1717 char *str = g_strndup(payload, len); 1723 char *str = g_strndup(payload, len);
1718 purple_debug_info("msn", "unknown user %s, payload is %s\n", 1724 purple_debug_info("msn", "unknown user %s, payload is %s\n",
1719 passport, str); 1725 passport, str);
1720 g_free(str); 1726 g_free(str);
1721 return; 1727 return;
1722 } 1728 }
1729
1730 if (session->protocol_ver >= 18)
1731 g_free(passport);
1723 1732
1724 /* Free any existing media info for this user */ 1733 /* Free any existing media info for this user */
1725 if (user->extinfo) { 1734 if (user->extinfo) {
1726 g_free(user->extinfo->media_album); 1735 g_free(user->extinfo->media_album);
1727 g_free(user->extinfo->media_artist); 1736 g_free(user->extinfo->media_artist);
1765 static void 1774 static void
1766 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) 1775 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
1767 { 1776 {
1768 purple_debug_misc("msn", "UBX received.\n"); 1777 purple_debug_misc("msn", "UBX received.\n");
1769 cmdproc->last_cmd->payload_cb = ubx_cmd_post; 1778 cmdproc->last_cmd->payload_cb = ubx_cmd_post;
1770 cmd->payload_len = atoi(cmd->params[2]); 1779 if (cmdproc->session->protocol_ver >= 18)
1780 cmd->payload_len = atoi(cmd->params[1]);
1781 else
1782 cmd->payload_len = atoi(cmd->params[2]);
1771 } 1783 }
1772 1784
1773 static void 1785 static void
1774 uux_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, 1786 uux_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
1775 size_t len) 1787 size_t len)