Mercurial > pidgin.yaz
comparison 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 |
comparison
equal
deleted
inserted
replaced
10620:17daac7cea91 | 10621:fe919915fceb |
---|---|
43 | 43 |
44 session->user = msn_user_new(session->userlist, | 44 session->user = msn_user_new(session->userlist, |
45 gaim_account_get_username(account), NULL); | 45 gaim_account_get_username(account), NULL); |
46 | 46 |
47 session->protocol_ver = 9; | 47 session->protocol_ver = 9; |
48 session->conv_seq = 1; | |
48 | 49 |
49 return session; | 50 return session; |
50 } | 51 } |
51 | 52 |
52 void | 53 void |
142 msn_notification_close(session->notification); | 143 msn_notification_close(session->notification); |
143 } | 144 } |
144 | 145 |
145 /* TODO: This must go away when conversation is redesigned */ | 146 /* TODO: This must go away when conversation is redesigned */ |
146 MsnSwitchBoard * | 147 MsnSwitchBoard * |
147 msn_session_find_swboard(MsnSession *session, const char *username, | 148 msn_session_find_swboard(MsnSession *session, const char *username) |
148 MsnSBFlag flag) | |
149 { | 149 { |
150 GList *l; | 150 GList *l; |
151 | 151 |
152 g_return_val_if_fail(session != NULL, NULL); | 152 g_return_val_if_fail(session != NULL, NULL); |
153 g_return_val_if_fail(username != NULL, NULL); | 153 g_return_val_if_fail(username != NULL, NULL); |
156 { | 156 { |
157 MsnSwitchBoard *swboard; | 157 MsnSwitchBoard *swboard; |
158 | 158 |
159 swboard = l->data; | 159 swboard = l->data; |
160 | 160 |
161 if ((swboard->im_user != NULL) && | 161 if ((swboard->im_user != NULL) && !strcmp(username, swboard->im_user)) |
162 !strcmp(username, swboard->im_user) && (swboard->flag & flag)) | |
163 return swboard; | 162 return swboard; |
164 } | 163 } |
165 | 164 |
166 return NULL; | 165 return NULL; |
167 } | 166 } |
168 | 167 |
169 MsnSwitchBoard * | 168 MsnSwitchBoard * |
170 msn_session_find_swboard_with_id(const MsnSession *session, int chat_id, | 169 msn_session_find_swboard_with_conv(MsnSession *session, GaimConversation *conv) |
171 MsnSBFlag flag) | 170 { |
171 GList *l; | |
172 | |
173 g_return_val_if_fail(session != NULL, NULL); | |
174 g_return_val_if_fail(conv != NULL, NULL); | |
175 | |
176 for (l = session->switches; l != NULL; l = l->next) | |
177 { | |
178 MsnSwitchBoard *swboard; | |
179 | |
180 swboard = l->data; | |
181 | |
182 if (swboard->conv == conv) | |
183 return swboard; | |
184 } | |
185 | |
186 return NULL; | |
187 } | |
188 | |
189 MsnSwitchBoard * | |
190 msn_session_find_swboard_with_id(const MsnSession *session, int chat_id) | |
172 { | 191 { |
173 GList *l; | 192 GList *l; |
174 | 193 |
175 g_return_val_if_fail(session != NULL, NULL); | 194 g_return_val_if_fail(session != NULL, NULL); |
176 g_return_val_if_fail(chat_id >= 0, NULL); | 195 g_return_val_if_fail(chat_id >= 0, NULL); |
179 { | 198 { |
180 MsnSwitchBoard *swboard; | 199 MsnSwitchBoard *swboard; |
181 | 200 |
182 swboard = l->data; | 201 swboard = l->data; |
183 | 202 |
184 if ((swboard->chat_id == chat_id) && (swboard->flag & flag)) | 203 if (swboard->chat_id == chat_id) |
185 return swboard; | 204 return swboard; |
186 } | 205 } |
187 | 206 |
188 return NULL; | 207 return NULL; |
189 } | 208 } |
190 | 209 |
191 MsnSwitchBoard * | 210 MsnSwitchBoard * |
192 msn_session_get_swboard(MsnSession *session, const char *username, | 211 msn_session_get_swboard(MsnSession *session, const char *username) |
193 MsnSBFlag flag) | |
194 { | 212 { |
195 MsnSwitchBoard *swboard; | 213 MsnSwitchBoard *swboard; |
196 | 214 |
197 swboard = msn_session_find_swboard(session, username, flag); | 215 swboard = msn_session_find_swboard(session, username); |
198 | 216 |
199 if (swboard == NULL) | 217 if (swboard == NULL) |
200 { | 218 { |
201 swboard = msn_switchboard_new(session); | 219 swboard = msn_switchboard_new(session); |
202 swboard->im_user = g_strdup(username); | 220 swboard->im_user = g_strdup(username); |
203 swboard->flag = flag; | |
204 msn_switchboard_request(swboard); | 221 msn_switchboard_request(swboard); |
205 msn_switchboard_request_add_user(swboard, username); | 222 msn_switchboard_request_add_user(swboard, username); |
206 } | 223 } |
207 | 224 |
208 return swboard; | 225 return swboard; |