Mercurial > pidgin
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) |