diff libpurple/protocols/msn/switchboard.c @ 31095:e30865b62859

Initial support for msnp16, based on patch by Masca. References #8247.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Tue, 01 Dec 2009 22:13:30 +0000
parents dda434352a35
children 88a3135c5a23
line wrap: on
line diff
--- a/libpurple/protocols/msn/switchboard.c	Mon Nov 30 05:59:57 2009 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Tue Dec 01 22:13:30 2009 +0000
@@ -949,6 +949,7 @@
 	MsnTransaction *trans;
 	MsnCmdProc *cmdproc;
 	PurpleAccount *account;
+	char *username;
 
 	cmdproc = servconn->cmdproc;
 	g_return_if_fail(cmdproc != NULL);
@@ -957,24 +958,33 @@
 	swboard = cmdproc->data;
 	g_return_if_fail(swboard != NULL);
 
+	if (servconn->session->protocol_ver >= 16)
+		username = g_strdup(purple_account_get_username(account));
+	else
+		username = g_strdup_printf("%s;{%s}",
+		                           purple_account_get_username(account),
+		                           servconn->session->guid);
+
 	if (msn_switchboard_is_invited(swboard))
 	{
 		swboard->empty = FALSE;
 
 		trans = msn_transaction_new(cmdproc, "ANS", "%s %s %s",
-									purple_account_get_username(account),
+									username,
 									swboard->auth_key, swboard->session_id);
 	}
 	else
 	{
 		trans = msn_transaction_new(cmdproc, "USR", "%s %s",
-									purple_account_get_username(account),
+									username,
 									swboard->auth_key);
 	}
 
 	msn_transaction_set_error_cb(trans, ans_usr_error);
 	msn_transaction_set_data(trans, swboard);
 	msn_cmdproc_send_trans(cmdproc, trans);
+
+	g_free(username);
 }
 
 static void