Mercurial > pidgin
annotate src/protocols/msn/switchboard.c @ 10462:f7b32dd67bdf
[gaim-migrate @ 11735]
Fix for bug 1027454: Blank "Unable to open socket" window if locale is not UTF-8
committer: Tailor Script <tailor@pidgin.im>
| author | Stu Tomlinson <stu@nosnilmot.com> |
|---|---|
| date | Fri, 31 Dec 2004 15:34:18 +0000 |
| parents | 92d4a25fd33c |
| children | 9bed28273ec7 |
| rev | line source |
|---|---|
| 4542 | 1 /** |
| 2 * @file switchboard.c MSN switchboard functions | |
| 3 * | |
| 4 * gaim | |
| 5 * | |
|
9198
ab6636c5a136
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9194
diff
changeset
|
6 * Gaim is the legal property of its developers, whose names are too numerous |
|
ab6636c5a136
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9194
diff
changeset
|
7 * to list here. Please refer to the COPYRIGHT file distributed with this |
|
ab6636c5a136
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9194
diff
changeset
|
8 * source distribution. |
|
6668
7e8a70c531a7
[gaim-migrate @ 7193]
Christian Hammond <chipx86@chipx86.com>
parents:
6640
diff
changeset
|
9 * |
| 4542 | 10 * This program is free software; you can redistribute it and/or modify |
| 11 * it under the terms of the GNU General Public License as published by | |
| 12 * the Free Software Foundation; either version 2 of the License, or | |
| 13 * (at your option) any later version. | |
| 14 * | |
| 15 * This program is distributed in the hope that it will be useful, | |
| 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 18 * GNU General Public License for more details. | |
| 19 * | |
| 20 * You should have received a copy of the GNU General Public License | |
| 21 * along with this program; if not, write to the Free Software | |
|
8207
aa44049e8891
[gaim-migrate @ 8930]
Christian Hammond <chipx86@chipx86.com>
parents:
7639
diff
changeset
|
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 4542 | 23 */ |
| 24 #include "msn.h" | |
|
5626
6275ac113622
[gaim-migrate @ 6033]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
25 #include "prefs.h" |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
26 #include "switchboard.h" |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
27 #include "notification.h" |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
28 #include "utils.h" |
| 4542 | 29 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
30 #include "error.h" |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
31 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
32 static MsnTable *cbs_table; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
33 |
| 10345 | 34 static void msg_error_helper(MsnCmdProc *cmdproc, MsnMessage *msg, |
| 35 MsnMsgErrorType error); | |
| 36 | |
| 37 /************************************************************************** | |
| 38 * Main stuff | |
| 39 **************************************************************************/ | |
| 40 MsnSwitchBoard * | |
| 41 msn_switchboard_new(MsnSession *session) | |
| 42 { | |
| 43 MsnSwitchBoard *swboard; | |
| 44 MsnServConn *servconn; | |
| 45 MsnCmdProc *cmdproc; | |
| 46 | |
| 47 g_return_val_if_fail(session != NULL, NULL); | |
| 48 | |
| 49 swboard = g_new0(MsnSwitchBoard, 1); | |
| 50 | |
| 51 swboard->session = session; | |
| 52 swboard->servconn = servconn = msn_servconn_new(session, MSN_SERVER_SB); | |
| 53 cmdproc = servconn->cmdproc; | |
| 54 | |
| 55 swboard->im_queue = g_queue_new(); | |
| 56 swboard->empty = TRUE; | |
| 57 | |
| 58 servconn->data = swboard; | |
| 59 | |
| 60 session->switches = g_list_append(session->switches, swboard); | |
| 61 | |
| 62 cmdproc->cbs_table = cbs_table; | |
| 63 | |
| 64 return swboard; | |
| 65 } | |
| 66 | |
| 67 void | |
| 68 msn_switchboard_destroy(MsnSwitchBoard *swboard) | |
| 69 { | |
| 70 MsnSession *session; | |
| 71 MsnMessage *msg; | |
| 72 GList *l; | |
| 73 | |
| 74 g_return_if_fail(swboard != NULL); | |
| 75 | |
| 76 if (swboard->destroying) | |
| 77 return; | |
| 78 | |
| 79 swboard->destroying = TRUE; | |
| 80 | |
| 81 /* If it linked us is because its looking for trouble */ | |
| 82 if (swboard->slplink != NULL) | |
| 83 msn_slplink_destroy(swboard->slplink); | |
| 84 | |
| 85 /* Destroy the message queue */ | |
| 86 while ((msg = g_queue_pop_head(swboard->im_queue)) != NULL) | |
| 87 { | |
| 88 if (swboard->error != MSN_SB_ERROR_NONE) | |
| 89 { | |
| 90 /* The messages could not be sent due to a switchboard error */ | |
| 91 msg_error_helper(swboard->servconn->cmdproc, msg, | |
| 92 MSN_MSG_ERROR_SB); | |
| 93 } | |
| 10403 | 94 msn_message_unref(msg); |
| 10345 | 95 } |
| 96 | |
| 97 g_queue_free(swboard->im_queue); | |
| 98 | |
| 10403 | 99 for (l = swboard->ack_list; l != NULL; l = l->next) |
| 100 msn_message_unref(l->data); | |
| 101 | |
| 10345 | 102 if (swboard->im_user != NULL) |
| 103 g_free(swboard->im_user); | |
| 104 | |
| 105 if (swboard->auth_key != NULL) | |
| 106 g_free(swboard->auth_key); | |
| 107 | |
| 108 if (swboard->session_id != NULL) | |
| 109 g_free(swboard->session_id); | |
| 110 | |
| 111 for (l = swboard->users; l != NULL; l = l->next) | |
| 112 g_free(l->data); | |
| 113 | |
| 114 session = swboard->session; | |
| 115 session->switches = g_list_remove(session->switches, swboard); | |
| 116 | |
| 117 if (swboard->servconn != NULL) | |
| 118 msn_servconn_destroy(swboard->servconn); | |
| 119 | |
| 120 g_free(swboard); | |
| 121 } | |
| 122 | |
| 123 void | |
| 124 msn_switchboard_set_auth_key(MsnSwitchBoard *swboard, const char *key) | |
| 125 { | |
| 126 g_return_if_fail(swboard != NULL); | |
| 127 g_return_if_fail(key != NULL); | |
| 128 | |
| 129 swboard->auth_key = g_strdup(key); | |
| 130 } | |
| 131 | |
| 132 const char * | |
| 133 msn_switchboard_get_auth_key(MsnSwitchBoard *swboard) | |
| 134 { | |
| 135 g_return_val_if_fail(swboard != NULL, NULL); | |
| 136 | |
| 137 return swboard->auth_key; | |
| 138 } | |
| 139 | |
| 140 void | |
| 141 msn_switchboard_set_session_id(MsnSwitchBoard *swboard, const char *id) | |
| 142 { | |
| 143 g_return_if_fail(swboard != NULL); | |
| 144 g_return_if_fail(id != NULL); | |
| 145 | |
| 146 if (swboard->session_id != NULL) | |
| 147 g_free(swboard->session_id); | |
| 148 | |
| 149 swboard->session_id = g_strdup(id); | |
| 150 } | |
| 151 | |
| 152 const char * | |
| 153 msn_switchboard_get_session_id(MsnSwitchBoard *swboard) | |
| 154 { | |
| 155 g_return_val_if_fail(swboard != NULL, NULL); | |
| 156 | |
| 157 return swboard->session_id; | |
| 158 } | |
| 159 | |
| 160 void | |
| 161 msn_switchboard_set_invited(MsnSwitchBoard *swboard, gboolean invited) | |
| 162 { | |
| 163 g_return_if_fail(swboard != NULL); | |
| 164 | |
| 165 swboard->invited = invited; | |
| 166 } | |
| 167 | |
| 168 gboolean | |
| 169 msn_switchboard_is_invited(MsnSwitchBoard *swboard) | |
| 170 { | |
| 171 g_return_val_if_fail(swboard != NULL, FALSE); | |
| 172 | |
| 173 return swboard->invited; | |
| 174 } | |
| 10225 | 175 |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
176 /************************************************************************** |
|
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
177 * Utility functions |
|
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
178 **************************************************************************/ |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
179 static void |
|
5793
952710ac6635
[gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
180 send_clientcaps(MsnSwitchBoard *swboard) |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
181 { |
|
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
182 MsnMessage *msg; |
|
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
183 |
| 10225 | 184 msg = msn_message_new(MSN_MSG_CAPS); |
|
5475
ad9887c91a59
[gaim-migrate @ 5871]
Christian Hammond <chipx86@chipx86.com>
parents:
5454
diff
changeset
|
185 msn_message_set_content_type(msg, "text/x-clientcaps"); |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
186 msn_message_set_flag(msg, 'U'); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
187 msn_message_set_bin_data(msg, MSN_CLIENTINFO, strlen(MSN_CLIENTINFO)); |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
188 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
189 msn_switchboard_send_msg(swboard, msg); |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
190 |
|
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
191 msn_message_destroy(msg); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
192 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
193 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
194 void |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
195 msn_switchboard_add_user(MsnSwitchBoard *swboard, const char *user) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
196 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
197 MsnCmdProc *cmdproc; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
198 GaimAccount *account; |
|
9198
ab6636c5a136
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9194
diff
changeset
|
199 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
200 g_return_if_fail(swboard != NULL); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
201 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
202 cmdproc = swboard->servconn->cmdproc; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
203 account = swboard->servconn->session->account; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
204 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
205 swboard->users = g_list_prepend(swboard->users, g_strdup(user)); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
206 swboard->current_users++; |
| 10346 | 207 swboard->empty = FALSE; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
208 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
209 /* gaim_debug_info("msn", "user=[%s], total=%d\n", user, |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
210 * swboard->current_users); */ |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
211 |
| 10345 | 212 if ((swboard->conv != NULL) && |
| 213 (gaim_conversation_get_type(swboard->conv) == GAIM_CONV_CHAT)) | |
|
9363
997c28571364
[gaim-migrate @ 10171]
Christian Hammond <chipx86@chipx86.com>
parents:
9218
diff
changeset
|
214 { |
| 10345 | 215 gaim_conv_chat_add_user(GAIM_CONV_CHAT(swboard->conv), user, NULL, |
| 216 GAIM_CBFLAGS_NONE, TRUE); | |
|
9363
997c28571364
[gaim-migrate @ 10171]
Christian Hammond <chipx86@chipx86.com>
parents:
9218
diff
changeset
|
217 } |
|
997c28571364
[gaim-migrate @ 10171]
Christian Hammond <chipx86@chipx86.com>
parents:
9218
diff
changeset
|
218 else if (swboard->current_users > 1 || swboard->total_users > 1) |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
219 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
220 if (swboard->conv == NULL || |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
221 gaim_conversation_get_type(swboard->conv) != GAIM_CONV_CHAT) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
222 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
223 GList *l; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
224 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
225 /* gaim_debug_info("msn", "[chat] Switching to chat.\n"); */ |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
226 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
227 if (swboard->conv != NULL) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
228 gaim_conversation_destroy(swboard->conv); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
229 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
230 cmdproc->session->conv_seq++; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
231 swboard->chat_id = cmdproc->session->conv_seq; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
232 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
233 swboard->conv = serv_got_joined_chat(account->gc, |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
234 swboard->chat_id, |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
235 "MSN Chat"); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
236 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
237 for (l = swboard->users; l != NULL; l = l->next) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
238 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
239 const char *tmp_user; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
240 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
241 tmp_user = l->data; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
242 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
243 /* gaim_debug_info("msn", "[chat] Adding [%s].\n", |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
244 * tmp_user); */ |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
245 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
246 gaim_conv_chat_add_user(GAIM_CONV_CHAT(swboard->conv), |
| 9846 | 247 tmp_user, NULL, GAIM_CBFLAGS_NONE, TRUE); |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
248 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
249 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
250 /* gaim_debug_info("msn", "[chat] We add ourselves.\n"); */ |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
251 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
252 gaim_conv_chat_add_user(GAIM_CONV_CHAT(swboard->conv), |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
253 gaim_account_get_username(account), |
| 9846 | 254 NULL, GAIM_CBFLAGS_NONE, TRUE); |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
255 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
256 g_free(swboard->im_user); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
257 swboard->im_user = NULL; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
258 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
259 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
260 else if (swboard->conv == NULL) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
261 { |
| 10246 | 262 /* XXX - I think this should probably be GAIM_CONV_CHAT, but I'm hedging */ |
| 263 swboard->conv = gaim_find_conversation_with_account(GAIM_CONV_ANY, | |
| 264 user, account); | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
265 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
266 else |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
267 { |
|
9363
997c28571364
[gaim-migrate @ 10171]
Christian Hammond <chipx86@chipx86.com>
parents:
9218
diff
changeset
|
268 gaim_debug_warning("msn", "This should not happen!" |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
269 "(msn_switchboard_add_user)\n"); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
270 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
271 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
272 |
| 10225 | 273 GaimConversation * |
| 274 msn_switchboard_get_conv(MsnSwitchBoard *swboard) | |
| 275 { | |
| 276 GaimAccount *account; | |
| 277 | |
| 278 g_return_val_if_fail(swboard != NULL, NULL); | |
| 279 | |
| 280 if (swboard->conv != NULL) | |
| 281 return swboard->conv; | |
| 282 | |
| 10346 | 283 gaim_debug_error("msn", "Switchboard with unassigned conversation\n"); |
| 10345 | 284 |
| 10225 | 285 account = swboard->session->account; |
| 286 | |
| 10246 | 287 /* XXX - I think this should probably be GAIM_CONV_IM, but I'm hedging */ |
| 288 return gaim_find_conversation_with_account(GAIM_CONV_IM, | |
| 289 swboard->im_user, account); | |
| 10225 | 290 } |
| 291 | |
| 292 void | |
| 293 msn_switchboard_report_user(MsnSwitchBoard *swboard, GaimMessageFlags flags, const char *msg) | |
| 294 { | |
| 295 GaimConversation *conv; | |
| 296 | |
| 297 g_return_if_fail(swboard != NULL); | |
| 298 g_return_if_fail(msg != NULL); | |
| 299 | |
| 300 if ((conv = msn_switchboard_get_conv(swboard)) != NULL) | |
| 301 { | |
| 302 gaim_conversation_write(conv, NULL, msg, flags, time(NULL)); | |
| 303 } | |
| 304 } | |
| 305 | |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
306 static void |
| 10345 | 307 swboard_error_helper(MsnSwitchBoard *swboard, int reason, const char *passport) |
| 308 { | |
| 10451 | 309 g_return_if_fail(swboard != NULL); |
| 310 | |
| 10345 | 311 gaim_debug_info("msg", "Error: Unable to call the user %s\n", passport); |
| 312 | |
| 313 if (swboard->total_users == 0) | |
| 314 { | |
| 315 swboard->error = reason; | |
| 316 msn_switchboard_destroy(swboard); | |
| 317 } | |
| 318 } | |
| 319 | |
| 320 static void | |
| 321 cal_error_helper(MsnTransaction *trans, int reason) | |
| 322 { | |
| 323 MsnSwitchBoard *swboard; | |
| 324 const char *passport; | |
| 325 char **params; | |
| 326 | |
| 327 params = g_strsplit(trans->params, " ", 0); | |
| 328 | |
| 329 passport = params[0]; | |
| 330 | |
| 331 swboard = trans->data; | |
| 332 | |
| 333 swboard_error_helper(swboard, reason, passport); | |
| 334 | |
| 335 g_strfreev(params); | |
| 336 } | |
| 337 | |
| 338 static void | |
| 339 msg_error_helper(MsnCmdProc *cmdproc, MsnMessage *msg, MsnMsgErrorType error) | |
| 340 { | |
| 10403 | 341 MsnSwitchBoard *swboard; |
| 342 | |
| 10345 | 343 g_return_if_fail(cmdproc != NULL); |
| 344 g_return_if_fail(msg != NULL); | |
| 345 | |
| 10403 | 346 if ((error != MSN_MSG_ERROR_SB) && (msg->nak_cb != NULL)) |
| 10345 | 347 msg->nak_cb(msg, msg->ack_data); |
| 348 | |
| 10403 | 349 swboard = cmdproc->servconn->data; |
| 350 | |
| 10345 | 351 if (msg->type == MSN_MSG_TEXT) |
| 352 { | |
| 10346 | 353 const char *format; |
| 354 char *body_str, *body_enc, *pre, *post; | |
| 10345 | 355 char *str_reason; |
| 356 | |
| 357 #if 0 | |
| 358 if (swboard->conv == NULL) | |
| 359 { | |
| 10346 | 360 if (msg->ack_ref) |
| 10403 | 361 msn_message_unref(msg); |
| 10346 | 362 |
| 10345 | 363 return; |
| 364 } | |
| 365 #endif | |
| 366 | |
| 10346 | 367 if (error == MSN_MSG_ERROR_TIMEOUT) |
| 10345 | 368 { |
| 369 str_reason = _("Message may have not been sent " | |
| 10451 | 370 "because a timeout occurred:"); |
| 10345 | 371 } |
| 10346 | 372 else if (error == MSN_MSG_ERROR_SB) |
| 10345 | 373 { |
| 374 switch (swboard->error) | |
| 375 { | |
| 376 case MSN_SB_ERROR_OFFLINE: | |
| 377 str_reason = _("Message could not be sent, " | |
| 10346 | 378 "not allowed while invisible:"); |
| 10345 | 379 break; |
| 380 case MSN_SB_ERROR_USER_OFFLINE: | |
| 381 str_reason = _("Message could not be sent " | |
| 10346 | 382 "because the user is offline:"); |
| 10345 | 383 break; |
| 384 case MSN_SB_ERROR_CONNECTION: | |
| 385 str_reason = _("Message could not be sent " | |
| 10391 | 386 "because a connection error occurred:"); |
| 10345 | 387 break; |
| 388 default: | |
| 389 str_reason = _("Message could not be sent " | |
| 390 "because an error with " | |
| 10391 | 391 "the switchboard occurred:"); |
| 10345 | 392 break; |
| 393 } | |
| 394 } | |
| 395 else | |
| 396 { | |
| 397 str_reason = _("Message may have not been sent " | |
| 10391 | 398 "because an unknown error occurred:"); |
| 10345 | 399 } |
| 400 | |
| 10346 | 401 body_str = msn_message_to_string(msg); |
| 402 body_enc = gaim_escape_html(body_str); | |
| 403 g_free(body_str); | |
| 404 | |
| 405 format = msn_message_get_attr(msg, "X-MMS-IM-Format"); | |
| 406 msn_parse_format(format, &pre, &post); | |
| 407 body_str = g_strdup_printf("%s%s%s", pre, body_enc, post); | |
| 408 g_free(body_enc); | |
| 409 g_free(pre); | |
| 410 g_free(post); | |
| 10345 | 411 |
| 10403 | 412 msn_switchboard_report_user(swboard, GAIM_MESSAGE_ERROR, |
| 413 str_reason); | |
| 414 msn_switchboard_report_user(swboard, GAIM_MESSAGE_RAW, | |
| 415 body_str); | |
| 10345 | 416 |
| 10346 | 417 g_free(body_str); |
| 10345 | 418 } |
| 419 | |
| 10403 | 420 /* If a timeout occures we will want the msg around just in case we |
| 421 * receive the ACK after the timeout. */ | |
| 422 if (msg->ack_ref && error != MSN_MSG_ERROR_TIMEOUT) | |
| 423 { | |
| 424 swboard->ack_list = g_list_remove(swboard->ack_list, msg); | |
| 10346 | 425 msn_message_unref(msg); |
| 10403 | 426 } |
| 10345 | 427 } |
| 428 | |
| 429 /************************************************************************** | |
| 430 * Switchboard Commands | |
| 431 **************************************************************************/ | |
| 432 static void | |
| 433 ans_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
| 434 { | |
| 435 MsnSwitchBoard *swboard; | |
| 436 | |
| 437 swboard = cmdproc->servconn->data; | |
| 438 swboard->ready = TRUE; | |
| 439 } | |
| 440 | |
| 441 static void | |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
442 bye_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
443 { |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
444 MsnSwitchBoard *swboard; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
445 const char *user; |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
446 |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
447 swboard = cmdproc->servconn->data; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
448 user = cmd->params[0]; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
449 |
| 10345 | 450 if (swboard->conv == NULL) |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
451 { |
| 10345 | 452 /* This is a helper switchboard */ |
| 10434 | 453 msn_switchboard_destroy(swboard); |
| 10345 | 454 } |
| 455 else if (swboard->current_users > 1) | |
| 456 { | |
| 457 /* This is a switchboard used for a chat */ | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
458 gaim_conv_chat_remove_user(GAIM_CONV_CHAT(swboard->conv), user, NULL); |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
459 } |
|
8372
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
460 else |
|
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
461 { |
| 10345 | 462 /* This is a switchboard used for a im session */ |
| 463 | |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
464 char *str = NULL; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
465 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
466 if (cmd->param_count == 2 && atoi(cmd->params[1]) == 1) |
|
8372
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
467 { |
|
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
468 if (gaim_prefs_get_bool("/plugins/prpl/msn/conv_timeout_notice")) |
|
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
469 { |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
470 str = g_strdup_printf(_("The conversation has become " |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
471 "inactive and timed out.")); |
|
5626
6275ac113622
[gaim-migrate @ 6033]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
472 } |
|
6275ac113622
[gaim-migrate @ 6033]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
473 } |
|
8372
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
474 else |
|
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
475 { |
|
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
476 if (gaim_prefs_get_bool("/plugins/prpl/msn/conv_close_notice")) |
|
bd16ed85cfc2
[gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents:
8207
diff
changeset
|
477 { |
| 10225 | 478 char *username; |
| 479 GaimAccount *account; | |
| 480 GaimBuddy *b; | |
| 481 | |
| 482 account = cmdproc->session->account; | |
| 483 | |
| 484 if ((b = gaim_find_buddy(account, user)) != NULL) | |
| 485 username = gaim_escape_html(gaim_buddy_get_alias(b)); | |
| 486 else | |
| 487 username = gaim_escape_html(user); | |
| 488 | |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
489 str = g_strdup_printf(_("%s has closed the conversation " |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
490 "window."), username); |
| 10225 | 491 |
| 492 g_free(username); | |
|
5626
6275ac113622
[gaim-migrate @ 6033]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
493 } |
|
6275ac113622
[gaim-migrate @ 6033]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
494 } |
|
6275ac113622
[gaim-migrate @ 6033]
Christian Hammond <chipx86@chipx86.com>
parents:
5566
diff
changeset
|
495 |
| 10225 | 496 if (str != NULL) |
| 497 msn_switchboard_report_user(swboard, GAIM_MESSAGE_SYSTEM, str); | |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
498 |
| 10434 | 499 msn_switchboard_destroy(swboard); |
| 4542 | 500 } |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
501 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
502 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
503 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
504 iro_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
505 { |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
506 GaimAccount *account; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
507 GaimConnection *gc; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
508 MsnSwitchBoard *swboard; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
509 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
510 account = cmdproc->session->account; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
511 gc = account->gc; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
512 swboard = cmdproc->servconn->data; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
513 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
514 swboard->total_users = atoi(cmd->params[2]); |
|
6026
01dd6b652c22
[gaim-migrate @ 6476]
Christian Hammond <chipx86@chipx86.com>
parents:
6025
diff
changeset
|
515 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
516 msn_switchboard_add_user(swboard, cmd->params[3]); |
| 4542 | 517 } |
| 518 | |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
519 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
520 joi_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| 4542 | 521 { |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
522 MsnSession *session; |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
523 GaimAccount *account; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
524 GaimConnection *gc; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
525 MsnSwitchBoard *swboard; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
526 const char *passport; |
| 4542 | 527 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
528 passport = cmd->params[0]; |
| 4542 | 529 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
530 session = cmdproc->session; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
531 account = session->account; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
532 gc = account->gc; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
533 swboard = cmdproc->servconn->data; |
|
6026
01dd6b652c22
[gaim-migrate @ 6476]
Christian Hammond <chipx86@chipx86.com>
parents:
6025
diff
changeset
|
534 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
535 msn_switchboard_add_user(swboard, passport); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
536 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
537 msn_switchboard_process_queue(swboard); |
|
9198
ab6636c5a136
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9194
diff
changeset
|
538 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
539 send_clientcaps(swboard); |
| 10403 | 540 |
| 541 if (swboard->closed) | |
| 542 msn_switchboard_close(swboard); | |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
543 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
544 |
|
8646
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
545 static void |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
546 msg_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload, size_t len) |
|
8646
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
547 { |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
548 MsnMessage *msg; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
549 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
550 msg = msn_message_new_from_cmd(cmdproc->session, cmd); |
|
8646
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
551 |
|
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
552 msn_message_parse_payload(msg, payload, len); |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
553 /* msn_message_show_readable(msg, "SB RECV", FALSE); */ |
|
8646
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
554 |
| 10284 | 555 if (msg->remote_user != NULL) |
| 556 g_free (msg->remote_user); | |
| 557 | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
558 msg->remote_user = g_strdup(cmd->params[0]); |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
559 msn_cmdproc_process_msg(cmdproc, msg); |
|
8646
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
560 |
|
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
561 msn_message_destroy(msg); |
|
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
562 } |
|
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
563 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
564 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
565 msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
566 { |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
567 cmdproc->servconn->payload_len = atoi(cmd->params[2]); |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
568 cmdproc->last_cmd->payload_cb = msg_cmd_post; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
569 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
570 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
571 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
572 nak_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
573 { |
| 10345 | 574 MsnMessage *msg; |
| 575 | |
| 576 msg = cmd->trans->data; | |
| 577 g_return_if_fail(msg != NULL); | |
| 578 | |
| 579 msg_error_helper(cmdproc, msg, MSN_MSG_ERROR_NAK); | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
580 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
581 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
582 static void |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
583 ack_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
584 { |
| 10403 | 585 MsnSwitchBoard *swboard; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
586 MsnMessage *msg; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
587 |
| 10345 | 588 msg = cmd->trans->data; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
589 |
| 10345 | 590 if (msg->ack_cb != NULL) |
| 591 msg->ack_cb(msg, msg->ack_data); | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
592 |
| 10403 | 593 swboard = cmdproc->servconn->data; |
| 594 swboard->ack_list = g_list_remove(swboard->ack_list, msg); | |
| 10345 | 595 msn_message_unref(msg); |
| 4542 | 596 } |
| 597 | |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
598 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
599 out_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
600 { |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
601 GaimConnection *gc; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
602 MsnSwitchBoard *swboard; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
603 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
604 gc = cmdproc->session->account->gc; |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
605 swboard = cmdproc->servconn->data; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
606 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
607 if (swboard->current_users > 1) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
608 serv_got_chat_left(gc, swboard->chat_id); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
609 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
610 msn_switchboard_disconnect(swboard); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
611 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
612 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
613 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
614 usr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| 4542 | 615 { |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
616 MsnSwitchBoard *swboard; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
617 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
618 swboard = cmdproc->servconn->data; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
619 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
620 #if 0 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
621 GList *l; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
622 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
623 for (l = swboard->users; l != NULL; l = l->next) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
624 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
625 const char *user; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
626 user = l->data; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
627 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
628 msn_cmdproc_send(cmdproc, "CAL", "%s", user); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
629 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
630 #endif |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
631 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
632 swboard->ready = TRUE; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
633 msn_cmdproc_process_queue(cmdproc); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
634 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
635 |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
636 /************************************************************************** |
| 10345 | 637 * Message Handlers |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
638 **************************************************************************/ |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
639 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
640 plain_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
641 { |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
642 GaimConnection *gc; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
643 MsnSwitchBoard *swboard; |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
644 const char *body; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
645 char *body_str; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
646 char *body_enc; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
647 char *body_final; |
| 10112 | 648 size_t body_len; |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
649 const char *passport; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
650 const char *value; |
| 4542 | 651 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
652 gc = cmdproc->session->account->gc; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
653 swboard = cmdproc->servconn->data; |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
654 |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
655 body = msn_message_get_bin_data(msg, &body_len); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
656 body_str = g_strndup(body, body_len); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
657 body_enc = gaim_escape_html(body_str); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
658 g_free(body_str); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
659 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
660 passport = msg->remote_user; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
661 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
662 if (!strcmp(passport, "messenger@microsoft.com") && |
|
6668
7e8a70c531a7
[gaim-migrate @ 7193]
Christian Hammond <chipx86@chipx86.com>
parents:
6640
diff
changeset
|
663 strstr(body, "immediate security update")) |
|
7e8a70c531a7
[gaim-migrate @ 7193]
Christian Hammond <chipx86@chipx86.com>
parents:
6640
diff
changeset
|
664 { |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
665 return; |
|
6668
7e8a70c531a7
[gaim-migrate @ 7193]
Christian Hammond <chipx86@chipx86.com>
parents:
6640
diff
changeset
|
666 } |
|
7e8a70c531a7
[gaim-migrate @ 7193]
Christian Hammond <chipx86@chipx86.com>
parents:
6640
diff
changeset
|
667 |
|
8646
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
668 #if 0 |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
669 if ((value = msn_message_get_attr(msg, "User-Agent")) != NULL) |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
670 { |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
671 gaim_debug_misc("msn", "User-Agent = '%s'\n", value); |
| 4542 | 672 } |
|
8646
1e211dde3cae
[gaim-migrate @ 9398]
Christian Hammond <chipx86@chipx86.com>
parents:
8583
diff
changeset
|
673 #endif |
| 4542 | 674 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
675 if ((value = msn_message_get_attr(msg, "X-MMS-IM-Format")) != NULL) |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
676 { |
|
6358
8ba58b296cc1
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6148
diff
changeset
|
677 char *pre_format, *post_format; |
|
8ba58b296cc1
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6148
diff
changeset
|
678 |
|
8ba58b296cc1
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6148
diff
changeset
|
679 msn_parse_format(value, &pre_format, &post_format); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
680 |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
681 body_final = g_strdup_printf("%s%s%s", pre_format, body_enc, post_format); |
|
6358
8ba58b296cc1
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6148
diff
changeset
|
682 |
|
8ba58b296cc1
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6148
diff
changeset
|
683 g_free(pre_format); |
|
8ba58b296cc1
[gaim-migrate @ 6862]
Christian Hammond <chipx86@chipx86.com>
parents:
6148
diff
changeset
|
684 g_free(post_format); |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
685 g_free(body_enc); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
686 } |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
687 else |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
688 { |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
689 body_final = body_enc; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
690 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
691 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
692 if (swboard->current_users > 1) |
|
8499
467b01d02f9c
[gaim-migrate @ 9235]
Christian Hammond <chipx86@chipx86.com>
parents:
8442
diff
changeset
|
693 { |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
694 serv_got_chat_in(gc, swboard->chat_id, passport, 0, body_final, |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
695 time(NULL)); |
|
8499
467b01d02f9c
[gaim-migrate @ 9235]
Christian Hammond <chipx86@chipx86.com>
parents:
8442
diff
changeset
|
696 } |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
697 else |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
698 serv_got_im(gc, passport, body_final, 0, time(NULL)); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
699 |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
700 g_free(body_final); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
701 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
702 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
703 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
704 control_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
705 { |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
706 GaimConnection *gc; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
707 MsnSwitchBoard *swboard; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
708 const char *value; |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
709 char *passport; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
710 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
711 gc = cmdproc->session->account->gc; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
712 swboard = cmdproc->servconn->data; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
713 passport = msg->remote_user; |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
714 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
715 if (swboard->current_users == 1 && |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
716 (value = msn_message_get_attr(msg, "TypingUser")) != NULL) |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
717 { |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
718 serv_got_typing(gc, passport, MSN_TYPING_RECV_TIMEOUT, |
|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5793
diff
changeset
|
719 GAIM_TYPING); |
| 4542 | 720 } |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
721 } |
| 4542 | 722 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
723 static void |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
724 clientcaps_msg(MsnCmdProc *cmdproc, MsnMessage *msg) |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
725 { |
|
6845
5de4d9a4e0e2
[gaim-migrate @ 7390]
Christian Hammond <chipx86@chipx86.com>
parents:
6842
diff
changeset
|
726 #if 0 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
727 MsnSession *session; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
728 MsnSwitchBoard *swboard; |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
729 MsnUser *user; |
|
5475
ad9887c91a59
[gaim-migrate @ 5871]
Christian Hammond <chipx86@chipx86.com>
parents:
5454
diff
changeset
|
730 GHashTable *clientcaps; |
|
5351
2aa7e4237142
[gaim-migrate @ 5727]
Christian Hammond <chipx86@chipx86.com>
parents:
5342
diff
changeset
|
731 const char *value; |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
732 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
733 char *passport = msg->sender; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
734 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
735 session = cmdproc->session; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
736 swboard = cmdproc->servconn->swboard; |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
737 |
|
5475
ad9887c91a59
[gaim-migrate @ 5871]
Christian Hammond <chipx86@chipx86.com>
parents:
5454
diff
changeset
|
738 clientcaps = msn_message_get_hashtable_from_body(msg); |
|
6845
5de4d9a4e0e2
[gaim-migrate @ 7390]
Christian Hammond <chipx86@chipx86.com>
parents:
6842
diff
changeset
|
739 #endif |
|
5316
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
740 } |
|
d5690ed70085
[gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents:
5309
diff
changeset
|
741 |
| 10345 | 742 /************************************************************************** |
| 743 * Message stuff | |
| 744 **************************************************************************/ | |
| 745 /** Called when a message times out. */ | |
| 10225 | 746 static void |
| 747 msg_timeout(MsnCmdProc *cmdproc, MsnTransaction *trans) | |
| 748 { | |
| 749 MsnMessage *msg; | |
| 750 | |
| 751 msg = trans->data; | |
| 752 | |
| 10345 | 753 msg_error_helper(cmdproc, msg, MSN_MSG_ERROR_TIMEOUT); |
| 10225 | 754 } |
| 755 | |
| 10345 | 756 /** Called when we receive an error of a message. */ |
| 10225 | 757 static void |
| 758 msg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
| 759 { | |
| 10345 | 760 msg_error_helper(cmdproc, trans->data, MSN_MSG_ERROR_UNKNOWN); |
| 10225 | 761 } |
| 762 | |
| 10345 | 763 #if 0 |
| 764 /** Called when we receive an ack of a special message. */ | |
| 10225 | 765 static void |
| 10345 | 766 msg_ack(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| 10225 | 767 { |
| 768 MsnMessage *msg; | |
| 769 | |
| 770 msg = cmd->trans->data; | |
| 771 | |
|
10306
56cc5d49472b
[gaim-migrate @ 11492]
Luke Schierer <lschiere@pidgin.im>
parents:
10284
diff
changeset
|
772 if (msg->ack_cb != NULL) |
|
56cc5d49472b
[gaim-migrate @ 11492]
Luke Schierer <lschiere@pidgin.im>
parents:
10284
diff
changeset
|
773 msg->ack_cb(msg->ack_data); |
| 10284 | 774 |
| 775 msn_message_unref(msg); | |
| 10225 | 776 } |
| 777 | |
| 10345 | 778 /** Called when we receive a nak of a special message. */ |
| 779 static void | |
| 780 msg_nak(MsnCmdProc *cmdproc, MsnCommand *cmd) | |
| 781 { | |
| 782 MsnMessage *msg; | |
| 783 | |
| 784 msg = cmd->trans->data; | |
| 785 | |
| 786 msn_message_unref(msg); | |
| 787 } | |
| 788 #endif | |
| 789 | |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
790 void |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
791 msn_switchboard_send_msg(MsnSwitchBoard *swboard, MsnMessage *msg) |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
792 { |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
793 MsnCmdProc *cmdproc; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
794 MsnTransaction *trans; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
795 char *payload; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
796 gsize payload_len; |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
797 |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
798 g_return_if_fail(swboard != NULL); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
799 g_return_if_fail(msg != NULL); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
800 |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
801 cmdproc = swboard->servconn->cmdproc; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
802 |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
803 payload = msn_message_gen_payload(msg, &payload_len); |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
804 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
805 /* msn_message_show_readable(msg, "SB SEND", FALSE); */ |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
806 |
| 10225 | 807 trans = msn_transaction_new(cmdproc, "MSG", "%c %d", |
| 808 msn_message_get_flag(msg), payload_len); | |
| 809 | |
| 810 /* Data for callbacks */ | |
| 811 msn_transaction_set_data(trans, msg); | |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
812 |
| 10345 | 813 if (msg->type == MSN_MSG_TEXT) |
| 10225 | 814 { |
| 10346 | 815 msg->ack_ref = TRUE; |
| 10345 | 816 msn_message_ref(msg); |
| 10403 | 817 swboard->ack_list = g_list_append(swboard->ack_list, msg); |
| 10225 | 818 msn_transaction_set_timeout_cb(trans, msg_timeout); |
| 819 } | |
| 10345 | 820 else if (msg->type == MSN_MSG_SLP) |
| 821 { | |
| 10346 | 822 msg->ack_ref = TRUE; |
| 10345 | 823 msn_message_ref(msg); |
| 10403 | 824 swboard->ack_list = g_list_append(swboard->ack_list, msg); |
| 10225 | 825 msn_transaction_set_timeout_cb(trans, msg_timeout); |
| 10345 | 826 #if 0 |
| 827 if (msg->ack_cb != NULL) | |
| 828 { | |
| 829 msn_transaction_add_cb(trans, "ACK", msg_ack); | |
| 830 msn_transaction_add_cb(trans, "NAK", msg_nak); | |
| 831 } | |
| 832 #endif | |
| 833 } | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
834 |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
835 trans->payload = payload; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
836 trans->payload_len = payload_len; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
837 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
838 msg->trans = trans; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
839 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
840 msn_cmdproc_send_trans(cmdproc, trans); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
841 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
842 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
843 void |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
844 msn_switchboard_queue_msg(MsnSwitchBoard *swboard, MsnMessage *msg) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
845 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
846 g_return_if_fail(swboard != NULL); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
847 g_return_if_fail(msg != NULL); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
848 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
849 gaim_debug_info("msn", "Appending message to queue.\n"); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
850 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
851 g_queue_push_tail(swboard->im_queue, msg); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
852 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
853 msn_message_ref(msg); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
854 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
855 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
856 void |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
857 msn_switchboard_process_queue(MsnSwitchBoard *swboard) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
858 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
859 MsnMessage *msg; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
860 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
861 g_return_if_fail(swboard != NULL); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
862 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
863 gaim_debug_info("msn", "Processing queue\n"); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
864 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
865 while ((msg = g_queue_pop_head(swboard->im_queue)) != NULL) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
866 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
867 gaim_debug_info("msn", "Sending message\n"); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
868 msn_switchboard_send_msg(swboard, msg); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
869 msn_message_unref(msg); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
870 } |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
871 } |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
872 |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
873 /************************************************************************** |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
874 * Connect stuff |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
875 **************************************************************************/ |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
876 static void |
|
8583
fc27237783ee
[gaim-migrate @ 9333]
Christian Hammond <chipx86@chipx86.com>
parents:
8499
diff
changeset
|
877 connect_cb(MsnServConn *servconn) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
878 { |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
879 MsnSwitchBoard *swboard; |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
880 MsnCmdProc *cmdproc; |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
881 GaimAccount *account; |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
882 |
|
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
883 cmdproc = servconn->cmdproc; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
884 g_return_if_fail(cmdproc != NULL); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
885 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
886 cmdproc->ready = TRUE; |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
887 |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
888 account = servconn->session->account; |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
889 swboard = servconn->data; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
890 g_return_if_fail(swboard != NULL); |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
891 |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
892 if (msn_switchboard_is_invited(swboard)) |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
893 { |
| 10346 | 894 swboard->empty = FALSE; |
| 895 | |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
896 msn_cmdproc_send(cmdproc, "ANS", "%s %s %s", |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
897 gaim_account_get_username(account), |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
898 swboard->auth_key, swboard->session_id); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
899 } |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
900 else |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
901 { |
|
9158
c30d81b4dd22
[gaim-migrate @ 9942]
Christian Hammond <chipx86@chipx86.com>
parents:
9083
diff
changeset
|
902 msn_cmdproc_send(cmdproc, "USR", "%s %s", |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
903 gaim_account_get_username(account), |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
904 swboard->auth_key); |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
905 } |
| 4542 | 906 } |
| 907 | |
| 908 static void | |
|
8583
fc27237783ee
[gaim-migrate @ 9333]
Christian Hammond <chipx86@chipx86.com>
parents:
8499
diff
changeset
|
909 disconnect_cb(MsnServConn *servconn) |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
910 { |
|
8583
fc27237783ee
[gaim-migrate @ 9333]
Christian Hammond <chipx86@chipx86.com>
parents:
8499
diff
changeset
|
911 MsnSwitchBoard *swboard; |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
912 |
|
8583
fc27237783ee
[gaim-migrate @ 9333]
Christian Hammond <chipx86@chipx86.com>
parents:
8499
diff
changeset
|
913 swboard = servconn->data; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
914 g_return_if_fail(swboard != NULL); |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
915 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
916 msn_switchboard_destroy(swboard); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
917 } |
|
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
918 |
| 10345 | 919 gboolean |
| 920 msn_switchboard_connect(MsnSwitchBoard *swboard, const char *host, int port) | |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
921 { |
| 10345 | 922 g_return_val_if_fail(swboard != NULL, FALSE); |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
923 |
| 10345 | 924 msn_servconn_set_connect_cb(swboard->servconn, connect_cb); |
| 10434 | 925 msn_servconn_set_disconnect_cb(swboard->servconn, disconnect_cb); |
|
9198
ab6636c5a136
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9194
diff
changeset
|
926 |
| 10345 | 927 return msn_servconn_connect(swboard->servconn, host, port); |
|
8808
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
928 } |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
929 |
|
bbd8cdaf0ad5
[gaim-migrate @ 9570]
Christian Hammond <chipx86@chipx86.com>
parents:
8663
diff
changeset
|
930 void |
| 10345 | 931 msn_switchboard_disconnect(MsnSwitchBoard *swboard) |
| 4542 | 932 { |
| 10345 | 933 g_return_if_fail(swboard != NULL); |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
934 |
| 10345 | 935 msn_servconn_disconnect(swboard->servconn); |
| 4542 | 936 } |
| 937 | |
| 10345 | 938 /************************************************************************** |
| 939 * Call stuff | |
| 940 **************************************************************************/ | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
941 static void |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
942 got_cal(MsnCmdProc *cmdproc, MsnCommand *cmd) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
943 { |
| 10403 | 944 #if 0 |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
945 MsnSwitchBoard *swboard; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
946 const char *user; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
947 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
948 swboard = cmdproc->servconn->data; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
949 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
950 user = cmd->params[0]; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
951 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
952 msn_switchboard_add_user(swboard, user); |
| 10403 | 953 #endif |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
954 } |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
955 |
| 10225 | 956 static void |
| 957 cal_timeout(MsnCmdProc *cmdproc, MsnTransaction *trans) | |
| 958 { | |
| 959 cal_error_helper(trans, MSN_SB_ERROR_UNKNOWN); | |
| 960 } | |
| 961 | |
| 962 static void | |
| 963 cal_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
| 964 { | |
| 965 int reason = MSN_SB_ERROR_UNKNOWN; | |
| 966 | |
| 10451 | 967 if (error == 215) |
| 968 { | |
| 969 gaim_debug_info("msn", "Invited user already in switchboard\n"); | |
| 970 return; | |
| 971 } | |
| 972 else if (error == 217) | |
| 973 { | |
| 10225 | 974 reason = MSN_SB_ERROR_USER_OFFLINE; |
| 10451 | 975 } |
| 10225 | 976 |
| 977 cal_error_helper(trans, reason); | |
| 978 } | |
| 979 | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
980 void |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
981 msn_switchboard_request_add_user(MsnSwitchBoard *swboard, const char *user) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
982 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
983 MsnTransaction *trans; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
984 MsnCmdProc *cmdproc; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
985 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
986 g_return_if_fail(swboard != NULL); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
987 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
988 cmdproc = swboard->servconn->cmdproc; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
989 |
| 10225 | 990 trans = msn_transaction_new(cmdproc, "CAL", "%s", user); |
| 10403 | 991 /* this doesn't do anything, but users seem to think that |
| 992 * 'Unhandled command' is some kind of error, so we don't report it */ | |
| 993 msn_transaction_add_cb(trans, "CAL", got_cal); | |
| 10225 | 994 |
| 995 msn_transaction_set_data(trans, swboard); | |
| 996 msn_transaction_set_timeout_cb(trans, cal_timeout); | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
997 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
998 if (swboard->ready) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
999 msn_cmdproc_send_trans(cmdproc, trans); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1000 else |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1001 msn_cmdproc_queue_trans(cmdproc, trans); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1002 } |
| 4542 | 1003 |
| 10345 | 1004 /************************************************************************** |
| 1005 * Create & Transfer stuff | |
| 1006 **************************************************************************/ | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1007 static void |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1008 got_swboard(MsnCmdProc *cmdproc, MsnCommand *cmd) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1009 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1010 MsnSwitchBoard *swboard; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1011 char *host; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1012 int port; |
| 9218 | 1013 swboard = cmd->trans->data; |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1014 |
| 10403 | 1015 if (g_list_find(cmdproc->session->switches, swboard) == NULL) |
| 1016 /* The conversation window was closed. */ | |
| 1017 return; | |
| 1018 | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1019 msn_switchboard_set_auth_key(swboard, cmd->params[4]); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1020 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1021 msn_parse_socket(cmd->params[2], &host, &port); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1022 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1023 if (swboard->session->http_method) |
| 10044 | 1024 { |
| 1025 GaimAccount *account; | |
| 1026 MsnSession *session; | |
| 1027 MsnServConn *servconn; | |
| 1028 | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1029 port = 80; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1030 |
| 10044 | 1031 session = swboard->session; |
| 1032 servconn = swboard->servconn; | |
| 1033 account = session->account; | |
| 1034 | |
| 10345 | 1035 swboard->empty = FALSE; |
| 10044 | 1036 |
| 1037 servconn->http_data->gateway_host = g_strdup(host); | |
| 1038 | |
| 1039 #if 0 | |
| 1040 servconn->connected = TRUE; | |
| 1041 servconn->cmdproc->ready = TRUE; | |
| 1042 #endif | |
| 1043 | |
| 1044 if (msn_switchboard_is_invited(swboard)) | |
| 1045 { | |
| 1046 msn_cmdproc_send(servconn->cmdproc, "ANS", "%s %s %s", | |
| 1047 gaim_account_get_username(account), | |
| 1048 swboard->auth_key, swboard->session_id); | |
| 1049 } | |
| 1050 else | |
| 1051 { | |
| 1052 msn_cmdproc_send(servconn->cmdproc, "USR", "%s %s", | |
| 1053 gaim_account_get_username(account), | |
| 1054 swboard->auth_key); | |
| 1055 } | |
| 1056 } | |
| 1057 | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1058 msn_switchboard_connect(swboard, host, port); |
| 10093 | 1059 |
| 1060 g_free(host); | |
|
5309
e2e53316a21d
[gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
5221
diff
changeset
|
1061 } |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1062 |
| 10225 | 1063 static void |
| 1064 xfr_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error) | |
| 1065 { | |
| 1066 MsnSwitchBoard *swboard; | |
| 1067 int reason = MSN_SB_ERROR_UNKNOWN; | |
| 1068 | |
| 1069 if (error == 913) | |
| 1070 reason = MSN_SB_ERROR_OFFLINE; | |
| 1071 | |
| 1072 swboard = trans->data; | |
| 1073 | |
| 1074 swboard_error_helper(swboard, reason, swboard->im_user); | |
| 1075 } | |
| 1076 | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1077 void |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1078 msn_switchboard_request(MsnSwitchBoard *swboard) |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1079 { |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1080 MsnCmdProc *cmdproc; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1081 MsnTransaction *trans; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1082 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1083 g_return_if_fail(swboard != NULL); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1084 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1085 cmdproc = swboard->session->notification->cmdproc; |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1086 |
| 10225 | 1087 trans = msn_transaction_new(cmdproc, "XFR", "%s", "SB"); |
| 1088 msn_transaction_add_cb(trans, "XFR", got_swboard); | |
| 10403 | 1089 |
| 10225 | 1090 msn_transaction_set_data(trans, swboard); |
| 1091 msn_transaction_set_error_cb(trans, xfr_error); | |
|
9193
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1092 |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1093 msn_cmdproc_send_trans(cmdproc, trans); |
|
502707ca1836
[gaim-migrate @ 9988]
Christian Hammond <chipx86@chipx86.com>
parents:
9158
diff
changeset
|
1094 } |
| 10345 | 1095 |
| 10403 | 1096 void |
| 1097 msn_switchboard_close(MsnSwitchBoard *swboard) | |
| 1098 { | |
| 1099 g_return_if_fail(swboard != NULL); | |
| 1100 | |
| 1101 if (g_queue_is_empty(swboard->im_queue)) | |
| 1102 { | |
| 1103 MsnCmdProc *cmdproc; | |
| 1104 | |
| 1105 cmdproc = swboard->servconn->cmdproc; | |
| 1106 | |
| 1107 msn_cmdproc_send_quick(cmdproc, "OUT", NULL, NULL); | |
| 1108 | |
| 1109 msn_switchboard_destroy(swboard); | |
| 1110 } | |
| 1111 else | |
| 1112 swboard->closed = TRUE; | |
| 1113 } | |
| 1114 | |
| 10345 | 1115 /************************************************************************** |
| 1116 * Init stuff | |
| 1117 **************************************************************************/ | |
| 1118 void | |
| 1119 msn_switchboard_init(void) | |
| 1120 { | |
| 1121 cbs_table = msn_table_new(); | |
| 1122 | |
| 1123 msn_table_add_cmd(cbs_table, "ANS", "ANS", ans_cmd); | |
| 1124 msn_table_add_cmd(cbs_table, "ANS", "IRO", iro_cmd); | |
| 1125 | |
| 1126 msn_table_add_cmd(cbs_table, "MSG", "ACK", ack_cmd); | |
| 1127 msn_table_add_cmd(cbs_table, "MSG", "NAK", nak_cmd); | |
| 1128 | |
| 1129 msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd); | |
| 1130 | |
| 1131 msn_table_add_cmd(cbs_table, NULL, "MSG", msg_cmd); | |
| 1132 msn_table_add_cmd(cbs_table, NULL, "JOI", joi_cmd); | |
| 1133 msn_table_add_cmd(cbs_table, NULL, "BYE", bye_cmd); | |
| 1134 msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd); | |
| 1135 | |
| 1136 #if 0 | |
| 1137 /* They might skip the history */ | |
| 1138 msn_table_add_cmd(cbs_table, NULL, "ACK", NULL); | |
| 1139 #endif | |
| 1140 | |
| 1141 msn_table_add_error(cbs_table, "MSG", msg_error); | |
| 1142 msn_table_add_error(cbs_table, "CAL", cal_error); | |
| 1143 | |
| 1144 /* Register the message type callbacks. */ | |
| 1145 msn_table_add_msg_type(cbs_table, "text/plain", | |
| 1146 plain_msg); | |
| 1147 msn_table_add_msg_type(cbs_table, "text/x-msmsgscontrol", | |
| 1148 control_msg); | |
| 1149 msn_table_add_msg_type(cbs_table, "text/x-clientcaps", | |
| 1150 clientcaps_msg); | |
| 1151 msn_table_add_msg_type(cbs_table, "text/x-clientinfo", | |
| 1152 clientcaps_msg); | |
| 1153 msn_table_add_msg_type(cbs_table, "application/x-msnmsgrp2p", | |
| 1154 msn_p2p_msg); | |
| 1155 msn_table_add_msg_type(cbs_table, "text/x-mms-emoticon", | |
| 1156 msn_emoticon_msg); | |
| 1157 #if 0 | |
| 1158 msn_table_add_msg_type(cbs_table, "text/x-msmmsginvite", | |
| 1159 msn_invite_msg); | |
| 1160 #endif | |
| 1161 } | |
| 1162 | |
| 1163 void | |
| 1164 msn_switchboard_end(void) | |
| 1165 { | |
| 1166 msn_table_destroy(cbs_table); | |
| 1167 } |
