diff src/protocols/msn/session.c @ 10621:fe919915fceb

[gaim-migrate @ 12090] This should fix the MSN problems with having multiple switchboards associated with the same conversation / buddy. committer: Tailor Script <tailor@pidgin.im>
author Stu Tomlinson <stu@nosnilmot.com>
date Tue, 22 Feb 2005 15:16:38 +0000
parents f52ab405f1ab
children bf5e48215158
line wrap: on
line diff
--- a/src/protocols/msn/session.c	Tue Feb 22 15:10:16 2005 +0000
+++ b/src/protocols/msn/session.c	Tue Feb 22 15:16:38 2005 +0000
@@ -45,6 +45,7 @@
 								 gaim_account_get_username(account), NULL);
 
 	session->protocol_ver = 9;
+	session->conv_seq = 1;
 
 	return session;
 }
@@ -144,8 +145,7 @@
 
 /* TODO: This must go away when conversation is redesigned */
 MsnSwitchBoard *
-msn_session_find_swboard(MsnSession *session, const char *username,
-						 MsnSBFlag flag)
+msn_session_find_swboard(MsnSession *session, const char *username)
 {
 	GList *l;
 
@@ -158,8 +158,7 @@
 
 		swboard = l->data;
 
-		if ((swboard->im_user != NULL) &&
-			!strcmp(username, swboard->im_user) && (swboard->flag & flag))
+		if ((swboard->im_user != NULL) && !strcmp(username, swboard->im_user))
 			return swboard;
 	}
 
@@ -167,8 +166,28 @@
 }
 
 MsnSwitchBoard *
-msn_session_find_swboard_with_id(const MsnSession *session, int chat_id,
-								 MsnSBFlag flag)
+msn_session_find_swboard_with_conv(MsnSession *session, GaimConversation *conv)
+{
+	GList *l;
+
+	g_return_val_if_fail(session  != NULL, NULL);
+	g_return_val_if_fail(conv != NULL, NULL);
+
+	for (l = session->switches; l != NULL; l = l->next)
+	{
+		MsnSwitchBoard *swboard;
+
+		swboard = l->data;
+
+		if (swboard->conv == conv)
+			return swboard;
+	}
+
+	return NULL;
+}
+
+MsnSwitchBoard *
+msn_session_find_swboard_with_id(const MsnSession *session, int chat_id)
 {
 	GList *l;
 
@@ -181,7 +200,7 @@
 
 		swboard = l->data;
 
-		if ((swboard->chat_id == chat_id) && (swboard->flag & flag))
+		if (swboard->chat_id == chat_id)
 			return swboard;
 	}
 
@@ -189,18 +208,16 @@
 }
 
 MsnSwitchBoard *
-msn_session_get_swboard(MsnSession *session, const char *username,
-						MsnSBFlag flag)
+msn_session_get_swboard(MsnSession *session, const char *username)
 {
 	MsnSwitchBoard *swboard;
 
-	swboard = msn_session_find_swboard(session, username, flag);
+	swboard = msn_session_find_swboard(session, username);
 
 	if (swboard == NULL)
 	{
 		swboard = msn_switchboard_new(session);
 		swboard->im_user = g_strdup(username);
-		swboard->flag = flag;
 		msn_switchboard_request(swboard);
 		msn_switchboard_request_add_user(swboard, username);
 	}