Apparently, UBM was updated with more parameters in MSNp16. One is

Thu, 02 Dec 2010 03:59:58 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Thu, 02 Dec 2010 03:59:58 +0000
changeset 31196
6db417623c94
parent 31195
277dd496abaf
child 31197
30563bde468b

Apparently, UBM was updated with more parameters in MSNp16. One is
your own email address, but I'm not sure what the 4th parameter is.

Anyway, update payload length to use the correct parameter now.

Fixes #13022.

ChangeLog file | annotate | diff | comparison | revisions
libpurple/protocols/msn/notification.c file | annotate | diff | comparison | revisions
libpurple/protocols/msn/switchboard.c file | annotate | diff | comparison | revisions
--- a/ChangeLog	Thu Dec 02 02:56:51 2010 +0000
+++ b/ChangeLog	Thu Dec 02 03:59:58 2010 +0000
@@ -28,6 +28,8 @@
 	  disconnected.
 	* Allow full-size display names, by not escaping (most) non-English
 	  characters. (#8508)
+	* Fix receiving messages from users on Yahoo and other federated
+	  services. (#13022)
 
 version 2.7.7 (11/23/2010):
 	General:
--- a/libpurple/protocols/msn/notification.c	Thu Dec 02 02:56:51 2010 +0000
+++ b/libpurple/protocols/msn/notification.c	Thu Dec 02 03:59:58 2010 +0000
@@ -387,7 +387,10 @@
 	 * command and we are processing it */
 	if (cmd->payload == NULL) {
 		cmdproc->last_cmd->payload_cb = msg_cmd_post;
-		cmd->payload_len = atoi(cmd->params[3]);
+		if (cmdproc->session->protocol_ver >= 16)
+			cmd->payload_len = atoi(cmd->params[5]);
+		else
+			cmd->payload_len = atoi(cmd->params[3]);
 	} else {
 		g_return_if_fail(cmd->payload_cb != NULL);
 
--- a/libpurple/protocols/msn/switchboard.c	Thu Dec 02 02:56:51 2010 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Thu Dec 02 03:59:58 2010 +0000
@@ -743,7 +743,10 @@
 ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	purple_debug_misc("msn", "get UBM...\n");
-	cmd->payload_len = atoi(cmd->params[3]);
+	if (cmdproc->session->protocol_ver >= 16)
+		cmd->payload_len = atoi(cmd->params[5]);
+	else
+		cmd->payload_len = atoi(cmd->params[3]);
 	cmdproc->last_cmd->payload_cb = msg_cmd_post;
 }
 

mercurial