libgaim/protocols/msn/switchboard.c

Mon, 21 Aug 2006 22:50:58 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Mon, 21 Aug 2006 22:50:58 +0000
changeset 14340
9cc8bf39b3ab
parent 14254
77edc7a6191a
child 15347
d0e0f67e1c2b
permissions
-rw-r--r--

[gaim-migrate @ 16963]
Fix a crazy bug that we found at meebo. I'm not sure it
affects gtk Gaim in quite the same way, but what was
happeing is that the conversation sequence number should
be incremented by 1 each time a new conversation is
created (whether created by someone else or created by
you). However, in one place in Gaim conv_seq was being
incremented BEFORE it was used and in another it was
being incremented AFTER it was used. This can lead to
a sequence number being used twice.

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

mercurial