libpurple/protocols/msn/switchboard.c

Mon, 19 Jul 2010 21:11:32 +0000

author
Jorge Villaseñor <masca@cpw.pidgin.im>
date
Mon, 19 Jul 2010 21:11:32 +0000
branch
soc.2010.msn-tlc
changeset 31056
c6787549eb7d
parent 30528
8ebd24be8388
parent 31039
c6fe9d44bf81
child 31076
dcc26c5e9d7e
permissions
-rw-r--r--

propagate from branch 'im.pidgin.pidgin' (head a46b07196e3eee4af2d06fd1ae29905780ac2f12)
to branch 'im.pidgin.soc.2010.msn-tlc' (head 3047e75048c82937e867d340b7c08ce4786078a4)

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 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
4 * purple
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
6 * Purple is the legal property of its developers, whose names are too numerous
9198
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
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19826
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30943
diff changeset
24
30961
885064b16c54 Include internal.h on each c file to avoid windows breakage as recommended by Daniel.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30958
diff changeset
25 #include "internal.h"
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30943
diff changeset
26 #include "debug.h"
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30943
diff changeset
27
30957
92cc461fa105 Switchboard includes cleanup.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30945
diff changeset
28 #include "msnutils.h"
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
29 #include "switchboard.h"
31020
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31019
diff changeset
30 #include "sbconn.h"
30958
5426ac690bec Switchboard: move this includes to the c file.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30957
diff changeset
31 #include "slplink.h"
5426ac690bec Switchboard: move this includes to the c file.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30957
diff changeset
32 #include "user.h"
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
33 #include "userlist.h"
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
34
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
35 static MsnTable *cbs_table;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
36
10345
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
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
46 g_return_val_if_fail(session != NULL, NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
47
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
48 swboard = g_new0(MsnSwitchBoard, 1);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
49
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
50 swboard->session = session;
27885
71d85d19eded Timeout switchboard connections at 60 seconds, should Fixes #3330 for most
Ka-Hing Cheung <khc@pidgin.im>
parents: 27691
diff changeset
51 swboard->servconn = msn_servconn_new(session, MSN_SERVCONN_SB);
71d85d19eded Timeout switchboard connections at 60 seconds, should Fixes #3330 for most
Ka-Hing Cheung <khc@pidgin.im>
parents: 27691
diff changeset
52 msn_servconn_set_idle_timeout(swboard->servconn, 60);
71d85d19eded Timeout switchboard connections at 60 seconds, should Fixes #3330 for most
Ka-Hing Cheung <khc@pidgin.im>
parents: 27691
diff changeset
53 swboard->cmdproc = swboard->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
24218
8e128219c671 Stu's idea, I sort of did it the other way. I don't know if it will help
Ka-Hing Cheung <khc@pidgin.im>
parents: 24068
diff changeset
61 session->switches = g_list_prepend(session->switches, swboard);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
62
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
63 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
64 purple_debug_info("msn", "switchboard new: swboard(%p)\n", swboard);
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
65
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
66 return swboard;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
67 }
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 void
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
70 msn_switchboard_destroy(MsnSwitchBoard *swboard)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
71 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
72 MsnSession *session;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
73 MsnMessage *msg;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
74 GList *l;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
75
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
76 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
77 purple_debug_info("msn", "switchboard destroy: swboard(%p)\n", swboard);
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
78
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
79 g_return_if_fail(swboard != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
80
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
81 if (swboard->destroying)
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
82 return;
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
83
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
84 swboard->destroying = TRUE;
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
85
24798
4a0c57b22a65 Remove this timer when the switchboard is destroyed. Fixes a crash
Mark Doliner <markdoliner@pidgin.im>
parents: 24767
diff changeset
86 if (swboard->reconn_timeout_h > 0)
4a0c57b22a65 Remove this timer when the switchboard is destroyed. Fixes a crash
Mark Doliner <markdoliner@pidgin.im>
parents: 24767
diff changeset
87 purple_timeout_remove(swboard->reconn_timeout_h);
4a0c57b22a65 Remove this timer when the switchboard is destroyed. Fixes a crash
Mark Doliner <markdoliner@pidgin.im>
parents: 24767
diff changeset
88
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
89 /* If it linked us is because its looking for trouble */
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29138
diff changeset
90 while (swboard->slplinks != NULL) {
30081
a0f194e8dbb9 Remove old code that was commented out, but is really just not necessary.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30066
diff changeset
91 MsnSlpLink *slplink = swboard->slplinks->data;
a0f194e8dbb9 Remove old code that was commented out, but is really just not necessary.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30066
diff changeset
92
31032
b25150599f00 Hide msn_slplink_destroy and use the unref version everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31020
diff changeset
93 swboard->slplinks = g_list_remove(swboard->slplinks, slplink);
b25150599f00 Hide msn_slplink_destroy and use the unref version everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31020
diff changeset
94
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29138
diff changeset
95 /* Destroy only those slplinks which use the switchboard */
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29138
diff changeset
96 if (slplink->dc == NULL)
31032
b25150599f00 Hide msn_slplink_destroy and use the unref version everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31020
diff changeset
97 msn_slplink_unref(slplink);
30066
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29138
diff changeset
98 else {
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29138
diff changeset
99 swboard->slplinks = g_list_remove(swboard->slplinks, slplink);
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29138
diff changeset
100 slplink->swboard = NULL;
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29138
diff changeset
101 }
25742b976ce2 Initial support for direct connections. Preliminary patch from ticket #247
Gábor Szuromi <kukkerman@gmail.com>
parents: 29138
diff changeset
102 }
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
103
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
104 /* Destroy the message queue */
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
105 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
106 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
107 if (swboard->error != MSN_SB_ERROR_NONE)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
108 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
109 /* 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
110 msg_error_helper(swboard->cmdproc, msg,
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
111 MSN_MSG_ERROR_SB);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
112 }
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
113 msn_message_unref(msg);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
114 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
115
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
116 g_queue_free(swboard->msg_queue);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
117
12236
8dceb9c5e15f [gaim-migrate @ 14538]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12211
diff changeset
118 /* 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
119 unref it, so we don't need to do either here */
8dceb9c5e15f [gaim-migrate @ 14538]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12211
diff changeset
120 while ((l = swboard->ack_list) != NULL)
8dceb9c5e15f [gaim-migrate @ 14538]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 12211
diff changeset
121 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
122
13695
64da09d24cbe [gaim-migrate @ 16096]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13628
diff changeset
123 g_free(swboard->im_user);
64da09d24cbe [gaim-migrate @ 16096]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13628
diff changeset
124 g_free(swboard->auth_key);
64da09d24cbe [gaim-migrate @ 16096]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13628
diff changeset
125 g_free(swboard->session_id);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
126
21063
911e85f207c7 Fix some leaks caused by misuse of g_list_remove_link() instead of g_list_delete_link().
Daniel Atallah <datallah@pidgin.im>
parents: 21019
diff changeset
127 for (; swboard->users; swboard->users = g_list_delete_link(swboard->users, swboard->users))
30943
c505e5a35e55 Manage switchboards with users not on our list.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
128 msn_user_unref(swboard->users->data);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
129
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
130 session = swboard->session;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
131 session->switches = g_list_remove(session->switches, swboard);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
132
24055
88d38a33d079 This should fix a crash that I've been seeing. I am not sure if this is the
Ka-Hing Cheung <khc@pidgin.im>
parents: 23876
diff changeset
133 for (l = session->slplinks; l; l = l->next) {
88d38a33d079 This should fix a crash that I've been seeing. I am not sure if this is the
Ka-Hing Cheung <khc@pidgin.im>
parents: 23876
diff changeset
134 MsnSlpLink *slplink = l->data;
88d38a33d079 This should fix a crash that I've been seeing. I am not sure if this is the
Ka-Hing Cheung <khc@pidgin.im>
parents: 23876
diff changeset
135 if (slplink->swboard == swboard) slplink->swboard = NULL;
88d38a33d079 This should fix a crash that I've been seeing. I am not sure if this is the
Ka-Hing Cheung <khc@pidgin.im>
parents: 23876
diff changeset
136 }
88d38a33d079 This should fix a crash that I've been seeing. I am not sure if this is the
Ka-Hing Cheung <khc@pidgin.im>
parents: 23876
diff changeset
137
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
138 #if 0
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
139 /* This should never happen or we are in trouble. */
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
140 if (swboard->servconn != NULL)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
141 msn_servconn_destroy(swboard->servconn);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
142 #endif
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
143
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
144 swboard->cmdproc->data = NULL;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
145
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
146 msn_servconn_set_disconnect_cb(swboard->servconn, NULL);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
147
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
148 msn_servconn_destroy(swboard->servconn);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
149
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
150 g_free(swboard);
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
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
153 void
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
154 msn_switchboard_set_auth_key(MsnSwitchBoard *swboard, const char *key)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
155 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
156 g_return_if_fail(swboard != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
157 g_return_if_fail(key != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
158
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
159 swboard->auth_key = g_strdup(key);
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
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
162 const char *
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
163 msn_switchboard_get_auth_key(MsnSwitchBoard *swboard)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
164 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
165 g_return_val_if_fail(swboard != NULL, NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
166
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
167 return swboard->auth_key;
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
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
170 void
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
171 msn_switchboard_set_session_id(MsnSwitchBoard *swboard, const char *id)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
172 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
173 g_return_if_fail(swboard != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
174 g_return_if_fail(id != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
175
21067
97a745428ab0 Cleanup some unnecessary NULL checks in g_strdup()/g_free().
Daniel Atallah <datallah@pidgin.im>
parents: 21063
diff changeset
176 g_free(swboard->session_id);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
177 swboard->session_id = g_strdup(id);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
178 }
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 const char *
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
181 msn_switchboard_get_session_id(MsnSwitchBoard *swboard)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
182 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
183 g_return_val_if_fail(swboard != NULL, NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
184
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
185 return swboard->session_id;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
186 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
187
22164
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
188 int
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
189 msn_switchboard_get_chat_id(void)
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
190 {
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
191 static int chat_id = 1;
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
192
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
193 return chat_id++;
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
194 }
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
195
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
196 void
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
197 msn_switchboard_set_invited(MsnSwitchBoard *swboard, gboolean invited)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
198 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
199 g_return_if_fail(swboard != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
200
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
201 swboard->invited = invited;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
202 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
203
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
204 gboolean
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
205 msn_switchboard_is_invited(MsnSwitchBoard *swboard)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
206 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
207 g_return_val_if_fail(swboard != NULL, FALSE);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
208
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
209 return swboard->invited;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
210 }
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
211
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
212 /**************************************************************************
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
213 * Utility
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
214 **************************************************************************/
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
215
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
216 static void
5793
28d84d5e5663 [gaim-migrate @ 6218]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
217 send_clientcaps(MsnSwitchBoard *swboard)
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
218 {
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
219 MsnMessage *msg;
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
220
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
221 msg = msn_message_new(MSN_MSG_CAPS);
5475
a2f856cac665 [gaim-migrate @ 5871]
Christian Hammond <chipx86@chipx86.com>
parents: 5454
diff changeset
222 msn_message_set_content_type(msg, "text/x-clientcaps");
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
223 msn_message_set_flag(msg, 'U');
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
224 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
225
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
226 msn_switchboard_send_msg(swboard, msg, TRUE);
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
227
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
228 msn_message_destroy(msg);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
229 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
230
12323
f52908fb23b0 [gaim-migrate @ 14627]
Richard Laager <rlaager@pidgin.im>
parents: 12236
diff changeset
231 static void
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
232 msn_switchboard_add_user(MsnSwitchBoard *swboard, const char *user)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
233 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
234 MsnCmdProc *cmdproc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
235 PurpleAccount *account;
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
236 MsnUserList *userlist;
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
237 MsnUser *msnuser;
29138
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
238 char *semicolon;
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
239 char *passport;
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9194
diff changeset
240
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
241 g_return_if_fail(swboard != NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
242
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
243 cmdproc = swboard->cmdproc;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
244 account = cmdproc->session->account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
245
29138
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
246 semicolon = strchr(user, ';');
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
247 /* We don't really care about the machine ID. */
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
248 if (semicolon)
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
249 passport = g_strndup(user, semicolon - user);
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
250 else
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
251 passport = g_strdup(user);
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
252
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
253 userlist = swboard->session->userlist;
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
254 msnuser = msn_userlist_find_user(userlist, passport);
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
255
29138
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
256 /* Don't add multiple endpoints to the conversation. */
31019
d5560bd5f1c0 Move an user utility function to User.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31017
diff changeset
257 if (g_list_find_custom(swboard->users, passport, (GCompareFunc)msn_user_passport_cmp)) {
29138
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
258 g_free(passport);
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
259 return;
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
260 }
9e89f5ee9268 *** Plucked rev 9115475787375850b563a1ec0b2007eaa463483e (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
261
29441
23390e8f463f Don't add ourselves to our own conversation.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29440
diff changeset
262 /* Don't add ourselves either... */
23390e8f463f Don't add ourselves to our own conversation.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29440
diff changeset
263 if (g_str_equal(passport, purple_account_get_username(account))) {
23390e8f463f Don't add ourselves to our own conversation.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29440
diff changeset
264 g_free(passport);
23390e8f463f Don't add ourselves to our own conversation.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29440
diff changeset
265 return;
23390e8f463f Don't add ourselves to our own conversation.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29440
diff changeset
266 }
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
267
30943
c505e5a35e55 Manage switchboards with users not on our list.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
268 if (!msnuser) {
c505e5a35e55 Manage switchboards with users not on our list.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
269 purple_debug_info("msn","User %s is not on our list.\n", passport);
c505e5a35e55 Manage switchboards with users not on our list.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
270 msnuser = msn_user_new(userlist, passport, NULL);
c505e5a35e55 Manage switchboards with users not on our list.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
271 } else
c505e5a35e55 Manage switchboards with users not on our list.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
272 msn_user_ref(msnuser);
c505e5a35e55 Manage switchboards with users not on our list.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30940
diff changeset
273
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
274 g_free(passport);
29441
23390e8f463f Don't add ourselves to our own conversation.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29440
diff changeset
275
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
276 swboard->users = g_list_prepend(swboard->users, msnuser);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
277 swboard->current_users++;
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
278 swboard->empty = FALSE;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
279
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
280 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
281 purple_debug_info("msn", "user=[%s], total=%d\n",
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
282 user, swboard->current_users);
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
283
10806
a0e659875d46 [gaim-migrate @ 12455]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10773
diff changeset
284 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
285 {
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
286 /* This is a helper switchboard. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
287 purple_debug_error("msn", "switchboard_add_user: conv != NULL\n");
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
288 return;
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
289 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
290
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
291 if ((swboard->conv != NULL) &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
292 (purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT))
9363
605961038476 [gaim-migrate @ 10171]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9218
diff changeset
293 {
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
294 purple_conv_chat_add_user(PURPLE_CONV_CHAT(swboard->conv), msnuser->passport, NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
295 PURPLE_CBFLAGS_NONE, TRUE);
28475
cd336f4d5fca Don't auto-close MSN switchboard connections for chats, because that means
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28460
diff changeset
296 msn_servconn_set_idle_timeout(swboard->servconn, 0);
9363
605961038476 [gaim-migrate @ 10171]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9218
diff changeset
297 }
29442
a046f53c5d8a Don't check the total number of users in an MSN switchboard when converting
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29441
diff changeset
298 else if (swboard->current_users > 1)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
299 {
28475
cd336f4d5fca Don't auto-close MSN switchboard connections for chats, because that means
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28460
diff changeset
300 msn_servconn_set_idle_timeout(swboard->servconn, 0);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
301 if (swboard->conv == NULL ||
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
302 purple_conversation_get_type(swboard->conv) != PURPLE_CONV_TYPE_CHAT)
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
303 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
304 GList *l;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
305
10533
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
306 #if 0
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
307 /* 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
308 * switchboard we're in the middle of using :( */
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
309 if (swboard->conv != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
310 purple_conversation_destroy(swboard->conv);
10533
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
311 #endif
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
312
22164
2307c0c05225 Use a unique chat id across all sessions for multi-user chats, probably
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21067
diff changeset
313 swboard->chat_id = msn_switchboard_get_chat_id();
10806
a0e659875d46 [gaim-migrate @ 12455]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10773
diff changeset
314 swboard->flag |= MSN_SB_FLAG_IM;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
315 swboard->conv = serv_got_joined_chat(account->gc,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
316 swboard->chat_id,
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
317 "MSN Chat");
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
318
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
319 for (l = swboard->users; l != NULL; l = l->next)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
320 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
321 const char *tmp_user;
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
322 user = l->data;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
323
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
324 tmp_user = msnuser->passport;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
325
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
326 purple_conv_chat_add_user(PURPLE_CONV_CHAT(swboard->conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
327 tmp_user, NULL, PURPLE_CBFLAGS_NONE, TRUE);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
328 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
329
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
330 purple_conv_chat_add_user(PURPLE_CONV_CHAT(swboard->conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
331 purple_account_get_username(account),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
332 NULL, PURPLE_CBFLAGS_NONE, TRUE);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
333
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
334 g_free(swboard->im_user);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
335 swboard->im_user = NULL;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
336 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
337 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
338 else if (swboard->conv == NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
339 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
340 swboard->conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
30938
fe9d2308ab3f Switchboard->users is now a list of MsnUsers which is a lot more useful and it is already allocated.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30921
diff changeset
341 msnuser->passport, account);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
342 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
343 else
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
344 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
345 purple_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
346 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
347 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
348
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
349 static PurpleConversation *
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
350 msn_switchboard_get_conv(MsnSwitchBoard *swboard)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
351 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
352 PurpleAccount *account;
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
353
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
354 g_return_val_if_fail(swboard != NULL, NULL);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
355
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
356 if (swboard->conv != NULL)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
357 return swboard->conv;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
358
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
359 purple_debug_error("msn", "Switchboard with unassigned conversation\n");
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
360
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
361 account = swboard->session->account;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
362
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
363 return (swboard->conv = purple_conversation_new(PURPLE_CONV_TYPE_IM,
13450
1bd45ebde8bd [gaim-migrate @ 15824]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13246
diff changeset
364 account, swboard->im_user));
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
365 }
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
366
12323
f52908fb23b0 [gaim-migrate @ 14627]
Richard Laager <rlaager@pidgin.im>
parents: 12236
diff changeset
367 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
368 msn_switchboard_report_user(MsnSwitchBoard *swboard, PurpleMessageFlags flags, const char *msg)
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
369 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
370 PurpleConversation *conv;
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
371
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
372 g_return_if_fail(swboard != NULL);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
373 g_return_if_fail(msg != NULL);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
374
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
375 if ((conv = msn_switchboard_get_conv(swboard)) != NULL)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
376 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
377 purple_conversation_write(conv, NULL, msg, flags, time(NULL));
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
378 }
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
379 }
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
380
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
381 static void
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
382 swboard_error_helper(MsnSwitchBoard *swboard, int reason, const char *passport)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
383 {
10451
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
384 g_return_if_fail(swboard != NULL);
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
385
23830
1436e3de5d6c The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23826
diff changeset
386 purple_debug_warning("msn", "Error: Unable to call the user %s for reason %i\n",
13246
5f5797c0d38b [gaim-migrate @ 15611]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 13244
diff changeset
387 passport ? passport : "(null)", reason);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
388
10533
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
389 /* 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
390 * we should report that in the chat or something */
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
391 if (swboard->current_users == 0)
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
392 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
393 swboard->error = reason;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
394 msn_switchboard_close(swboard);
10345
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 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
397
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
398 static void
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
399 cal_error_helper(MsnTransaction *trans, int reason)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
400 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
401 MsnSwitchBoard *swboard;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
402 const char *passport;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
403 char **params;
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 params = g_strsplit(trans->params, " ", 0);
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 passport = params[0];
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
408
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
409 swboard = trans->data;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
410
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
411 purple_debug_warning("msn", "cal_error_helper: command %s failed for reason %i\n",trans->command,reason);
13126
afce0fe97885 [gaim-migrate @ 15487]
Evan Schoenberg <evands@pidgin.im>
parents: 12323
diff changeset
412
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
413 swboard_error_helper(swboard, reason, passport);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
414
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
415 g_strfreev(params);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
416 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
417
24420
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
418 static gboolean
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
419 msg_resend_cb(gpointer data)
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
420 {
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
421 MsnSwitchBoard *swboard = data;
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
422
25686
5392767b8adc These debug messages need newlines.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
423 purple_debug_info("msn", "unqueuing unsent message to %s\n", swboard->im_user);
24420
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
424
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
425 msn_switchboard_request(swboard);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
426 msn_switchboard_request_add_user(swboard, swboard->im_user);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
427 swboard->reconn_timeout_h = 0;
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
428 return FALSE;
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
429 }
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
430
31020
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31019
diff changeset
431 void
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
432 msg_error_helper(MsnCmdProc *cmdproc, MsnMessage *msg, MsnMsgErrorType error)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
433 {
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
434 MsnSwitchBoard *swboard;
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
435
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
436 g_return_if_fail(cmdproc != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
437 g_return_if_fail(msg != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
438
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
439 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
440 msg->nak_cb(msg, msg->ack_data);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
441
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
442 swboard = cmdproc->data;
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
443
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
444 /* This is not good, and should be fixed somewhere else. */
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
445 g_return_if_fail(swboard != NULL);
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
446
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
447 if (msg->type == MSN_MSG_TEXT)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
448 {
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10487
diff changeset
449 const char *format, *str_reason;
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
450 char *body_str, *body_enc, *pre, *post;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
451
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
452 #if 0
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
453 if (swboard->conv == NULL)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
454 {
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
455 if (msg->ack_ref)
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
456 msn_message_unref(msg);
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
457
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
458 return;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
459 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
460 #endif
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
461
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
462 if (error == MSN_MSG_ERROR_TIMEOUT)
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 str_reason = _("Message may have not been sent "
10451
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
465 "because a timeout occurred:");
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
466 }
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
467 else if (error == MSN_MSG_ERROR_SB)
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
468 {
24420
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
469 MsnSession *session = swboard->session;
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
470
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
471 if (!session->destroying && msg->retries && swboard->im_user &&
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
472 (swboard->error == MSN_SB_ERROR_CONNECTION ||
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
473 swboard->error == MSN_SB_ERROR_UNKNOWN)) {
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
474 MsnSwitchBoard *new_sw = msn_session_find_swboard(session,
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
475 swboard->im_user);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
476
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
477 if (new_sw == NULL || new_sw->reconn_timeout_h == 0) {
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
478 new_sw = msn_switchboard_new(session);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
479 new_sw->im_user = g_strdup(swboard->im_user);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
480 new_sw->reconn_timeout_h = purple_timeout_add_seconds(3, msg_resend_cb, new_sw);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
481 new_sw->flag |= MSN_SB_FLAG_IM;
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
482 }
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
483
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
484 body_str = msn_message_to_string(msg);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
485 body_enc = g_markup_escape_text(body_str, -1);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
486 g_free(body_str);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
487
25686
5392767b8adc These debug messages need newlines.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25538
diff changeset
488 purple_debug_info("msn", "queuing unsent message to %s: %s\n",
24420
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
489 swboard->im_user, body_enc);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
490 g_free(body_enc);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
491 msn_send_im_message(session, msg);
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
492 msg->retries--;
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
493
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
494 return;
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
495 }
e83317602b22 attempts to resend message on switchboard error once, tested by maually
Ka-Hing Cheung <khc@pidgin.im>
parents: 24218
diff changeset
496
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
497 switch (swboard->error)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
498 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
499 case MSN_SB_ERROR_OFFLINE:
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
500 str_reason = _("Message could not be sent, "
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
501 "not allowed while invisible:");
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
502 break;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
503 case MSN_SB_ERROR_USER_OFFLINE:
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
504 str_reason = _("Message could not be sent "
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
505 "because the user is offline:");
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
506 break;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
507 case MSN_SB_ERROR_CONNECTION:
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
508 str_reason = _("Message could not be sent "
10391
d7bb3097f2c1 [gaim-migrate @ 11619]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10346
diff changeset
509 "because a connection error occurred:");
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
510 break;
13126
afce0fe97885 [gaim-migrate @ 15487]
Evan Schoenberg <evands@pidgin.im>
parents: 12323
diff changeset
511 case MSN_SB_ERROR_TOO_FAST:
afce0fe97885 [gaim-migrate @ 15487]
Evan Schoenberg <evands@pidgin.im>
parents: 12323
diff changeset
512 str_reason = _("Message could not be sent "
afce0fe97885 [gaim-migrate @ 15487]
Evan Schoenberg <evands@pidgin.im>
parents: 12323
diff changeset
513 "because we are sending too quickly:");
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
514 break;
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
515 case MSN_SB_ERROR_AUTHFAILED:
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
516 str_reason = _("Message could not be sent "
18167
f1979177eb0e Replace "wer" with "were"
Richard Laager <rlaager@pidgin.im>
parents: 17532
diff changeset
517 "because we were unable to establish a "
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
518 "session with the server. This is "
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
519 "likely a server problem, try again in "
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
520 "a few minutes:");
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
521 break;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
522 default:
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
523 str_reason = _("Message could not be sent "
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
524 "because an error with "
10391
d7bb3097f2c1 [gaim-migrate @ 11619]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10346
diff changeset
525 "the switchboard occurred:");
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
526 break;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
527 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
528 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
529 else
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
530 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
531 str_reason = _("Message may have not been sent "
10391
d7bb3097f2c1 [gaim-migrate @ 11619]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10346
diff changeset
532 "because an unknown error occurred:");
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
533 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
534
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
535 body_str = msn_message_to_string(msg);
10732
5e314ab498bf [gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents: 10621
diff changeset
536 body_enc = g_markup_escape_text(body_str, -1);
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
537 g_free(body_str);
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
538
29457
15f977c9ac76 Rename "attribute" to "header" in a bunch of places. The SLP protocol
Mark Doliner <markdoliner@pidgin.im>
parents: 29455
diff changeset
539 format = msn_message_get_header_value(msg, "X-MMS-IM-Format");
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
540 msn_parse_format(format, &pre, &post);
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
541 body_str = g_strdup_printf("%s%s%s", pre ? pre : "",
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
542 body_enc ? body_enc : "", post ? post : "");
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
543 g_free(body_enc);
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
544 g_free(pre);
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
545 g_free(post);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
546
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
547 msn_switchboard_report_user(swboard, PURPLE_MESSAGE_ERROR,
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
548 str_reason);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
549 msn_switchboard_report_user(swboard, PURPLE_MESSAGE_RAW,
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
550 body_str);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
551
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
552 g_free(body_str);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
553 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
554
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
555 /* 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
556 * receive the ACK after the timeout. */
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
557 if (msg->ack_ref && error != MSN_MSG_ERROR_TIMEOUT)
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
558 {
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
559 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
560 msn_message_unref(msg);
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
561 }
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
562 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
563
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
564 /**************************************************************************
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
565 * Message Stuff
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
566 **************************************************************************/
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 /** Called when we receive an error of a message. */
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 msg_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
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 msg_error_helper(cmdproc, trans->data, MSN_MSG_ERROR_UNKNOWN);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
573 }
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 #if 0
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
576 /** Called when we receive an ack of a special message. */
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
577 static void
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
578 msg_ack(MsnCmdProc *cmdproc, MsnCommand *cmd)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
579 {
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
580 MsnMessage *msg;
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 msg = cmd->trans->data;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
583
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
584 if (msg->ack_cb != NULL)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
585 msg->ack_cb(msg->ack_data);
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 msn_message_unref(msg);
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
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
590 /** Called when we receive a nak of a special message. */
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
591 static void
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
592 msg_nak(MsnCmdProc *cmdproc, MsnCommand *cmd)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
593 {
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
594 MsnMessage *msg;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
595
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
596 msg = cmd->trans->data;
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 msn_message_unref(msg);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
599 }
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
600 #endif
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 gboolean
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
603 msn_switchboard_can_send(MsnSwitchBoard *swboard)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
604 {
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
605 g_return_val_if_fail(swboard != NULL, 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 if (swboard->empty || !g_queue_is_empty(swboard->msg_queue))
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
608 return FALSE;
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 return TRUE;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
611 }
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
612
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
613 /**************************************************************************
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
614 * Switchboard Commands
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
615 **************************************************************************/
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
616
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
617 static void
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
618 ans_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
619 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
620 MsnSwitchBoard *swboard;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
621
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
622 swboard = cmdproc->data;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
623 swboard->ready = TRUE;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
624 }
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
625
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
626 static void
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
627 bye_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
628 {
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
629 MsnSwitchBoard *swboard;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
630 const char *user;
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
631
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
632 swboard = cmdproc->data;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
633 user = cmd->params[0];
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
634
15347
d0e0f67e1c2b [gaim-migrate @ 18075]
Evan Schoenberg <evands@pidgin.im>
parents: 14340
diff changeset
635 /* cmdproc->data is set to NULL when the switchboard is destroyed;
d0e0f67e1c2b [gaim-migrate @ 18075]
Evan Schoenberg <evands@pidgin.im>
parents: 14340
diff changeset
636 * we may get a bye shortly thereafter. */
d0e0f67e1c2b [gaim-migrate @ 18075]
Evan Schoenberg <evands@pidgin.im>
parents: 14340
diff changeset
637 g_return_if_fail(swboard != NULL);
d0e0f67e1c2b [gaim-migrate @ 18075]
Evan Schoenberg <evands@pidgin.im>
parents: 14340
diff changeset
638
11321
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10806
diff changeset
639 if (!(swboard->flag & MSN_SB_FLAG_IM) && (swboard->conv != NULL))
23830
1436e3de5d6c The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23826
diff changeset
640 purple_debug_error("msn", "bye_cmd: helper bug\n");
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
641
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
642 if (swboard->conv == NULL)
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
643 {
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
644 /* This is a helper switchboard */
10434
17665eed4948 [gaim-migrate @ 11691]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10403
diff changeset
645 msn_switchboard_destroy(swboard);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
646 }
10533
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
647 else if ((swboard->current_users > 1) ||
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
648 (purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT))
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
649 {
30528
8ebd24be8388 Remove a buddy that left a chat from an internal list. Otherwise, the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30089
diff changeset
650 GList *passport;
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
651 /* This is a switchboard used for a chat */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
652 purple_conv_chat_remove_user(PURPLE_CONV_CHAT(swboard->conv), user, NULL);
30528
8ebd24be8388 Remove a buddy that left a chat from an internal list. Otherwise, the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30089
diff changeset
653
8ebd24be8388 Remove a buddy that left a chat from an internal list. Otherwise, the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30089
diff changeset
654 passport = g_list_find_custom(swboard->users, user, (GCompareFunc)strcmp);
8ebd24be8388 Remove a buddy that left a chat from an internal list. Otherwise, the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30089
diff changeset
655 g_free(passport->data);
8ebd24be8388 Remove a buddy that left a chat from an internal list. Otherwise, the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30089
diff changeset
656 swboard->users = g_list_delete_link(swboard->users, passport);
10533
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
657 swboard->current_users--;
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
658 if (swboard->current_users == 0)
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10504
diff changeset
659 msn_switchboard_destroy(swboard);
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
660 }
8372
c861368e51d0 [gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents: 8207
diff changeset
661 else
c861368e51d0 [gaim-migrate @ 9099]
Christian Hammond <chipx86@chipx86.com>
parents: 8207
diff changeset
662 {
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
663 /* This is a switchboard used for a im session */
10434
17665eed4948 [gaim-migrate @ 11691]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10403
diff changeset
664 msn_switchboard_destroy(swboard);
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
665 }
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
666 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
667
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
668 static void
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
669 iro_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
670 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
671 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
672 PurpleConnection *gc;
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
673 MsnSwitchBoard *swboard;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
674
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
675 account = cmdproc->session->account;
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
676 gc = account->gc;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
677 swboard = cmdproc->data;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
678
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
679 swboard->total_users = atoi(cmd->params[2]);
6026
b11d9f2fd725 [gaim-migrate @ 6476]
Christian Hammond <chipx86@chipx86.com>
parents: 6025
diff changeset
680
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
681 msn_switchboard_add_user(swboard, cmd->params[3]);
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
682 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
683
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
684 static void
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
685 joi_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
686 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
687 MsnSession *session;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
688 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
689 PurpleConnection *gc;
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
690 MsnSwitchBoard *swboard;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
691 const char *passport;
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
692
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
693 passport = cmd->params[0];
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
694
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
695 session = cmdproc->session;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
696 account = session->account;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
697 gc = account->gc;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
698 swboard = cmdproc->data;
6026
b11d9f2fd725 [gaim-migrate @ 6476]
Christian Hammond <chipx86@chipx86.com>
parents: 6025
diff changeset
699
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
700 msn_switchboard_add_user(swboard, passport);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
701
31020
c1266a6b7745 Fix integration between Switchboard and SBConn. by setting public some functions on both sides. Regresion introduced in 99802eb80a7acd
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31019
diff changeset
702 msn_sbconn_process_queue(swboard);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9194
diff changeset
703
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
704 if (!session->http_method)
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
705 send_clientcaps(swboard);
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
706
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
707 if (swboard->closed)
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
708 msn_switchboard_close(swboard);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
709 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
710
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8583
diff changeset
711 static void
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
712 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
713 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
714 MsnMessage *msg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
715
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
716 msg = msn_message_new_from_cmd(cmdproc->session, cmd);
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8583
diff changeset
717
13886
e1d21534ecff [gaim-migrate @ 16973]
Ma Yuan <mayuan2006@gmail.com>
parents: 13880
diff changeset
718 msn_message_parse_payload(msg, payload, len,
e1d21534ecff [gaim-migrate @ 16973]
Ma Yuan <mayuan2006@gmail.com>
parents: 13880
diff changeset
719 MSG_LINE_DEM,MSG_BODY_DEM);
27691
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
720 if (purple_debug_is_verbose())
d77b2890043e Change all MSN_DEBUG_* messages to use the new purple_debug_is_verbose call
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27569
diff changeset
721 msn_message_show_readable(msg, "SB RECV", FALSE);
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8583
diff changeset
722
21063
911e85f207c7 Fix some leaks caused by misuse of g_list_remove_link() instead of g_list_delete_link().
Daniel Atallah <datallah@pidgin.im>
parents: 21019
diff changeset
723 g_free (msg->remote_user);
911e85f207c7 Fix some leaks caused by misuse of g_list_remove_link() instead of g_list_delete_link().
Daniel Atallah <datallah@pidgin.im>
parents: 21019
diff changeset
724 msg->remote_user = g_strdup(cmd->params[0]);
10284
257978b5df5b [gaim-migrate @ 11454]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10280
diff changeset
725
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
726 msn_cmdproc_process_msg(cmdproc, msg);
8646
74d0e7406e3b [gaim-migrate @ 9398]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8583
diff changeset
727
25473
9da14c8bae20 Missed a file in previous commit. Avoids a double-free.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24798
diff changeset
728 msn_message_unref(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
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
731 static void
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
732 msg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
733 {
23826
3eeaac42358f Get rid of that whole msn_set_payload_len thing and correctly set the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23816
diff changeset
734 cmd->payload_len = atoi(cmd->params[2]);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
735 cmdproc->last_cmd->payload_cb = msg_cmd_post;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
736 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
737
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
738 static void
13870
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13861
diff changeset
739 ubm_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13861
diff changeset
740 {
23830
1436e3de5d6c The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23826
diff changeset
741 purple_debug_misc("msn", "get UBM...\n");
24766
556a3e7255ba Cleaned up version of fc3ae8fb8dfcee72975a108303bd5f57d579ec45:
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24762
diff changeset
742 cmd->payload_len = atoi(cmd->params[3]);
13870
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13861
diff changeset
743 cmdproc->last_cmd->payload_cb = msg_cmd_post;
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13861
diff changeset
744 }
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13861
diff changeset
745
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13861
diff changeset
746 static void
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
747 nak_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
748 {
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
749 MsnMessage *msg;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
750
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
751 msg = cmd->trans->data;
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
752 g_return_if_fail(msg != NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
753
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
754 msg_error_helper(cmdproc, msg, MSN_MSG_ERROR_NAK);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
755 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
756
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
757 static void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
758 ack_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
759 {
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
760 MsnSwitchBoard *swboard;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
761 MsnMessage *msg;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
762
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
763 msg = cmd->trans->data;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
764
31039
c6fe9d44bf81 Use the real ack callback.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31032
diff changeset
765 if (msg->part && msg->part->ack_cb != NULL)
c6fe9d44bf81 Use the real ack callback.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31032
diff changeset
766 msg->part->ack_cb(msg->part, msg->part->ack_data);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
767
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
768 swboard = cmdproc->data;
19826
fd6596d64331 Deal better with receiving a msn ACK when there is no switchboard connected. Fixes #2640.
Daniel Atallah <datallah@pidgin.im>
parents: 19643
diff changeset
769 if (swboard)
fd6596d64331 Deal better with receiving a msn ACK when there is no switchboard connected. Fixes #2640.
Daniel Atallah <datallah@pidgin.im>
parents: 19643
diff changeset
770 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
771 msn_message_unref(msg);
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
772 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
773
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
774 static void
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
775 out_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
776 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
777 PurpleConnection *gc;
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
778 MsnSwitchBoard *swboard;
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
779
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
780 gc = cmdproc->session->account->gc;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
781 swboard = cmdproc->data;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
782
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
783 if (swboard->current_users > 1)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
784 serv_got_chat_left(gc, swboard->chat_id);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
785
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
786 msn_switchboard_disconnect(swboard);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
787 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
788
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
789 static void
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
790 usr_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
791 {
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
792 MsnSwitchBoard *swboard;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
793
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
794 swboard = cmdproc->data;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
795
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
796 #if 0
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
797 GList *l;
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 for (l = swboard->users; l != NULL; l = l->next)
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 const char *user;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
802 user = l->data;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
803
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
804 msn_cmdproc_send(cmdproc, "CAL", "%s", user);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
805 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
806 #endif
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
807
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
808 swboard->ready = TRUE;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
809 msn_cmdproc_process_queue(cmdproc);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
810 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
811
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
812 /**************************************************************************
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
813 * Message Handlers
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
814 **************************************************************************/
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
815 static void
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
816 clientcaps_msg(MsnCmdProc *cmdproc, MsnMessage *msg)
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
817 {
6845
3706464f79f7 [gaim-migrate @ 7390]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
818 #if 0
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
819 MsnSession *session;
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
820 MsnSwitchBoard *swboard;
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
821 MsnUser *user;
5475
a2f856cac665 [gaim-migrate @ 5871]
Christian Hammond <chipx86@chipx86.com>
parents: 5454
diff changeset
822 GHashTable *clientcaps;
5351
cb12105b532b [gaim-migrate @ 5727]
Christian Hammond <chipx86@chipx86.com>
parents: 5342
diff changeset
823 const char *value;
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
824
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
825 char *passport = msg->sender;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
826
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
827 session = cmdproc->session;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
828 swboard = cmdproc->servconn->swboard;
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
829
5475
a2f856cac665 [gaim-migrate @ 5871]
Christian Hammond <chipx86@chipx86.com>
parents: 5454
diff changeset
830 clientcaps = msn_message_get_hashtable_from_body(msg);
6845
3706464f79f7 [gaim-migrate @ 7390]
Christian Hammond <chipx86@chipx86.com>
parents: 6842
diff changeset
831 #endif
5316
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
832 }
ec9cbe50e70c [gaim-migrate @ 5688]
Christian Hammond <chipx86@chipx86.com>
parents: 5309
diff changeset
833
27569
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
834 void
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
835 msn_switchboard_show_ink(MsnSwitchBoard *swboard, const char *passport,
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
836 const char *data)
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
837 {
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
838 PurpleConnection *gc;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
839 guchar *image_data;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
840 size_t image_len;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
841 int imgid;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
842 char *image_msg;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
843
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
844 if (!purple_str_has_prefix(data, "base64:"))
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
845 {
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
846 purple_debug_error("msn", "Ignoring Ink not in Base64 format.\n");
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
847 return;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
848 }
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
849
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
850 gc = purple_account_get_connection(swboard->session->account);
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
851
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
852 data += sizeof("base64:") - 1;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
853 image_data = purple_base64_decode(data, &image_len);
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
854 if (!image_data || !image_len)
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
855 {
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
856 purple_debug_error("msn", "Unable to decode Ink from Base64 format.\n");
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
857 return;
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
858 }
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
859
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
860 imgid = purple_imgstore_add_with_id(image_data, image_len, NULL);
30023
d2e218d669c8 Those Adium guys don't like this slash.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29138
diff changeset
861 image_msg = g_strdup_printf("<IMG ID='%d'>", imgid);
27569
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
862
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
863 if (swboard->current_users > 1 ||
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
864 ((swboard->conv != NULL) &&
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
865 purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT))
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
866 serv_got_chat_in(gc, swboard->chat_id, passport, 0, image_msg,
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
867 time(NULL));
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
868 else
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
869 serv_got_im(gc, passport, image_msg, 0, time(NULL));
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
870
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
871 purple_imgstore_unref_by_id(imgid);
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
872 g_free(image_msg);
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
873 }
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
874
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
875 /**************************************************************************
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
876 * Connect stuff
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
877 **************************************************************************/
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
878 static void
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
879 ans_usr_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error);
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
880
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
881 static void
8583
56f69df8f12f [gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8499
diff changeset
882 connect_cb(MsnServConn *servconn)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
883 {
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
884 MsnSwitchBoard *swboard;
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
885 MsnTransaction *trans;
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
886 MsnCmdProc *cmdproc;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
887 PurpleAccount *account;
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
888 char *username;
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
889
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
890 cmdproc = servconn->cmdproc;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
891 g_return_if_fail(cmdproc != NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
892
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
893 account = cmdproc->session->account;
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
894 swboard = cmdproc->data;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
895 g_return_if_fail(swboard != NULL);
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9083
diff changeset
896
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
897 if (servconn->session->protocol_ver >= 16)
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
898 username = g_strdup_printf("%s;{%s}",
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
899 purple_account_get_username(account),
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
900 servconn->session->guid);
29437
034f5db23ca7 Fix some inverted logic that prevented us from starting conversations.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29420
diff changeset
901 else
034f5db23ca7 Fix some inverted logic that prevented us from starting conversations.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29420
diff changeset
902 username = g_strdup(purple_account_get_username(account));
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
903
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
904 if (msn_switchboard_is_invited(swboard))
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
905 {
10346
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
906 swboard->empty = FALSE;
9c65a007b4a5 [gaim-migrate @ 11560]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
907
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
908 trans = msn_transaction_new(cmdproc, "ANS", "%s %s %s",
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
909 username,
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
910 swboard->auth_key, swboard->session_id);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
911 }
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
912 else
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
913 {
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
914 trans = msn_transaction_new(cmdproc, "USR", "%s %s",
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
915 username,
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
916 swboard->auth_key);
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
917 }
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
918
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
919 msn_transaction_set_error_cb(trans, ans_usr_error);
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
920 msn_transaction_set_data(trans, swboard);
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
921 msn_cmdproc_send_trans(cmdproc, trans);
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
922
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28475
diff changeset
923 g_free(username);
17532
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
924 }
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
925
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
926 static void
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
927 ans_usr_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
928 {
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
929 MsnSwitchBoard *swboard;
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
930 char **params;
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
931 char *passport;
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
932 int reason = MSN_SB_ERROR_UNKNOWN;
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
933
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
934 if (error == 911)
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
935 {
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
936 reason = MSN_SB_ERROR_AUTHFAILED;
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
937 }
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
938
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
939 purple_debug_warning("msn", "ans_usr_error: command %s gave error %i\n", trans->command, error);
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
940
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
941 params = g_strsplit(trans->params, " ", 0);
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
942 passport = params[0];
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
943 swboard = trans->data;
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
944
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
945 swboard_error_helper(swboard, reason, passport);
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
946
1d4984e7dfeb Handle problems initiating or joining a switchboard session more gracefully.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16007
diff changeset
947 g_strfreev(params);
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
948 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
949
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
950 static void
8583
56f69df8f12f [gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8499
diff changeset
951 disconnect_cb(MsnServConn *servconn)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
952 {
8583
56f69df8f12f [gaim-migrate @ 9333]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8499
diff changeset
953 MsnSwitchBoard *swboard;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
954
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
955 swboard = servconn->cmdproc->data;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
956 g_return_if_fail(swboard != NULL);
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
957
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
958 msn_servconn_set_disconnect_cb(swboard->servconn, NULL);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
959
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
960 msn_switchboard_destroy(swboard);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
961 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
962
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
963 gboolean
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
964 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
965 {
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
966 g_return_val_if_fail(swboard != NULL, FALSE);
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
967
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
968 msn_servconn_set_connect_cb(swboard->servconn, connect_cb);
10434
17665eed4948 [gaim-migrate @ 11691]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10403
diff changeset
969 msn_servconn_set_disconnect_cb(swboard->servconn, disconnect_cb);
9198
e8eb6d5eb9eb [gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents: 9194
diff changeset
970
23816
fd601d075bd0 Allow forcing an MSN HTTP connection to connect to a new server. This
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23815
diff changeset
971 return msn_servconn_connect(swboard->servconn, host, port, FALSE);
8808
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
972 }
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
973
1cb5ddf6b625 [gaim-migrate @ 9570]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8663
diff changeset
974 void
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
975 msn_switchboard_disconnect(MsnSwitchBoard *swboard)
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
976 {
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
977 g_return_if_fail(swboard != NULL);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
978
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
979 msn_servconn_disconnect(swboard->servconn);
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
980 }
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
981
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
982 /**************************************************************************
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
983 * Call stuff
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
984 **************************************************************************/
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
985 static void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
986 got_cal(MsnCmdProc *cmdproc, MsnCommand *cmd)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
987 {
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
988 #if 0
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
989 MsnSwitchBoard *swboard;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
990 const char *user;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
991
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
992 swboard = cmdproc->data;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
993
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
994 user = cmd->params[0];
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
995
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
996 msn_switchboard_add_user(swboard, user);
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
997 #endif
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
998 }
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
999
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1000 static void
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1001 cal_timeout(MsnCmdProc *cmdproc, MsnTransaction *trans)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1002 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1003 purple_debug_warning("msn", "cal_timeout: command %s timed out\n", trans->command);
13126
afce0fe97885 [gaim-migrate @ 15487]
Evan Schoenberg <evands@pidgin.im>
parents: 12323
diff changeset
1004
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1005 cal_error_helper(trans, MSN_SB_ERROR_UNKNOWN);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1006 }
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1007
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1008 static void
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1009 cal_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1010 {
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1011 int reason = MSN_SB_ERROR_UNKNOWN;
13861
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1012 MsnMessage *msg;
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1013 MsnSwitchBoard *swboard = trans->data;
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1014
10451
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
1015 if (error == 215)
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
1016 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1017 purple_debug_info("msn", "Invited user already in switchboard\n");
10451
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
1018 return;
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
1019 }
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
1020 else if (error == 217)
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
1021 {
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1022 reason = MSN_SB_ERROR_USER_OFFLINE;
10451
2df35a139363 [gaim-migrate @ 11717]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10434
diff changeset
1023 }
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1024
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1025 purple_debug_warning("msn", "cal_error: command %s gave error %i\n", trans->command, error);
13861
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1026
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1027 while ((msg = g_queue_pop_head(swboard->msg_queue)) != NULL){
23830
1436e3de5d6c The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23826
diff changeset
1028 purple_debug_warning("msn", "Unable to send msg: {%s}\n", msg->body);
13861
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1029 /* The messages could not be sent due to a switchboard error */
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1030 swboard->error = MSN_SB_ERROR_USER_OFFLINE;
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1031 msg_error_helper(swboard->cmdproc, msg,
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1032 MSN_MSG_ERROR_SB);
dc0021ad2b73 [gaim-migrate @ 16653]
Ma Yuan <mayuan2006@gmail.com>
parents: 13713
diff changeset
1033 }
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1034 cal_error_helper(trans, reason);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1035 }
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1036
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1037 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1038 msn_switchboard_request_add_user(MsnSwitchBoard *swboard, const char *user)
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 MsnTransaction *trans;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1041 MsnCmdProc *cmdproc;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1042
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1043 g_return_if_fail(swboard != NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1044
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
1045 cmdproc = swboard->cmdproc;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1046
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1047 trans = msn_transaction_new(cmdproc, "CAL", "%s", user);
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1048 /* 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
1049 * '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
1050 msn_transaction_add_cb(trans, "CAL", got_cal);
10225
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 msn_transaction_set_data(trans, swboard);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1053 msn_transaction_set_timeout_cb(trans, cal_timeout);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1054
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1055 if (swboard->ready)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1056 msn_cmdproc_send_trans(cmdproc, trans);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1057 else
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1058 msn_cmdproc_queue_trans(cmdproc, trans);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1059 }
4542
05a476dec582 [gaim-migrate @ 4821]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1060
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1061 /**************************************************************************
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1062 * Create & Transfer stuff
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1063 **************************************************************************/
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1064
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1065 static void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1066 got_swboard(MsnCmdProc *cmdproc, MsnCommand *cmd)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1067 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1068 MsnSwitchBoard *swboard;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1069 char *host;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1070 int port;
9218
6ebf0fd0df6b [gaim-migrate @ 10014]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9198
diff changeset
1071 swboard = cmd->trans->data;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1072
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1073 if (g_list_find(cmdproc->session->switches, swboard) == NULL)
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1074 /* The conversation window was closed. */
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1075 return;
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1076
23830
1436e3de5d6c The great MSN debug message cleanup! Threw in a few whitespace fixes,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23826
diff changeset
1077 purple_debug_info("msn", "Switchboard:auth:{%s} socket:{%s}\n", cmd->params[4], cmd->params[2]);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1078 msn_switchboard_set_auth_key(swboard, cmd->params[4]);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1079
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1080 msn_parse_socket(cmd->params[2], &host, &port);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1081
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
1082 if (!msn_switchboard_connect(swboard, host, port))
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
1083 msn_switchboard_destroy(swboard);
10093
e22f76d46b0b [gaim-migrate @ 11111]
Evan Schoenberg <evands@pidgin.im>
parents: 10044
diff changeset
1084
e22f76d46b0b [gaim-migrate @ 11111]
Evan Schoenberg <evands@pidgin.im>
parents: 10044
diff changeset
1085 g_free(host);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents: 5221
diff changeset
1086 }
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1087
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1088 static void
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1089 xfr_error(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1090 {
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1091 MsnSwitchBoard *swboard;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1092 int reason = MSN_SB_ERROR_UNKNOWN;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1093
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1094 if (error == 913)
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1095 reason = MSN_SB_ERROR_OFFLINE;
13126
afce0fe97885 [gaim-migrate @ 15487]
Evan Schoenberg <evands@pidgin.im>
parents: 12323
diff changeset
1096 else if (error == 800)
afce0fe97885 [gaim-migrate @ 15487]
Evan Schoenberg <evands@pidgin.im>
parents: 12323
diff changeset
1097 reason = MSN_SB_ERROR_TOO_FAST;
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1098
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1099 swboard = trans->data;
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1100
22670
2ad82dd45c56 Another patch from Maiku that improves the way we send mobile messages, this
Ka-Hing Cheung <khc@pidgin.im>
parents: 22164
diff changeset
1101 purple_debug_info("msn",
2ad82dd45c56 Another patch from Maiku that improves the way we send mobile messages, this
Ka-Hing Cheung <khc@pidgin.im>
parents: 22164
diff changeset
1102 "xfr_error %i for %s: trans %p, command %s, reason %i\n",
2ad82dd45c56 Another patch from Maiku that improves the way we send mobile messages, this
Ka-Hing Cheung <khc@pidgin.im>
parents: 22164
diff changeset
1103 error, (swboard->im_user ? swboard->im_user : "(null)"), trans,
2ad82dd45c56 Another patch from Maiku that improves the way we send mobile messages, this
Ka-Hing Cheung <khc@pidgin.im>
parents: 22164
diff changeset
1104 (trans->command ? trans->command : "(null)"), reason);
13126
afce0fe97885 [gaim-migrate @ 15487]
Evan Schoenberg <evands@pidgin.im>
parents: 12323
diff changeset
1105
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1106 swboard_error_helper(swboard, reason, swboard->im_user);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1107 }
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1108
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1109 void
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1110 msn_switchboard_request(MsnSwitchBoard *swboard)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1111 {
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1112 MsnCmdProc *cmdproc;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1113 MsnTransaction *trans;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1114
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1115 g_return_if_fail(swboard != NULL);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1116
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1117 cmdproc = swboard->session->notification->cmdproc;
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 trans = msn_transaction_new(cmdproc, "XFR", "%s", "SB");
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1120 msn_transaction_add_cb(trans, "XFR", got_swboard);
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1121
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1122 msn_transaction_set_data(trans, swboard);
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
1123 msn_transaction_set_error_cb(trans, xfr_error);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1124
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1125 msn_cmdproc_send_trans(cmdproc, trans);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
1126 }
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1127
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1128 void
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1129 msn_switchboard_close(MsnSwitchBoard *swboard)
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1130 {
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1131 g_return_if_fail(swboard != NULL);
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1132
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1133 if (swboard->error != MSN_SB_ERROR_NONE)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1134 {
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1135 msn_switchboard_destroy(swboard);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1136 }
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1137 else if (g_queue_is_empty(swboard->msg_queue) ||
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1138 !swboard->session->connected)
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1139 {
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1140 MsnCmdProc *cmdproc;
30909
db4b1876a304 msn: Remove msn_cmdproc_send_quick in favor of msn_cmdproc_send_trans
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 29457
diff changeset
1141 MsnTransaction *trans;
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10451
diff changeset
1142 cmdproc = swboard->cmdproc;
30910
374c457d65b5 We need a way to send commands without transaction ID
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30909
diff changeset
1143 trans = msn_transaction_new(cmdproc, "OUT", NULL);
30915
56295f0a8ade I don't really like this name.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30910
diff changeset
1144 msn_transaction_set_saveable(trans, FALSE);
30909
db4b1876a304 msn: Remove msn_cmdproc_send_quick in favor of msn_cmdproc_send_trans
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 29457
diff changeset
1145 msn_cmdproc_send_trans(cmdproc, trans);
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1146
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1147 msn_switchboard_destroy(swboard);
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1148 }
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1149 else
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1150 {
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1151 swboard->closed = TRUE;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1152 }
10403
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1153 }
4647a87ef73b [gaim-migrate @ 11648]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10391
diff changeset
1154
24615
9a156dbd94c4 msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <markdoliner@pidgin.im>
parents: 24420
diff changeset
1155 void
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1156 msn_switchboard_release(MsnSwitchBoard *swboard, MsnSBFlag flag)
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1157 {
24615
9a156dbd94c4 msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <markdoliner@pidgin.im>
parents: 24420
diff changeset
1158 g_return_if_fail(swboard != NULL);
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1159
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1160 swboard->flag &= ~flag;
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1161
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1162 if (flag == MSN_SB_FLAG_IM)
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1163 /* Forget any conversation that used to be associated with this
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1164 * swboard. */
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1165 swboard->conv = NULL;
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1166
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1167 if (swboard->flag == 0)
24615
9a156dbd94c4 msn_slplink_remove_slpcall() shouldn't be responsible for setting
Mark Doliner <markdoliner@pidgin.im>
parents: 24420
diff changeset
1168 /* Nothing else is using this switchboard, so close it */
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1169 msn_switchboard_close(swboard);
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1170 }
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10732
diff changeset
1171
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1172 /**************************************************************************
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1173 * Init stuff
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1174 **************************************************************************/
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
1175
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1176 void
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1177 msn_switchboard_init(void)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1178 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1179 cbs_table = msn_table_new();
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1180
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1181 msn_table_add_cmd(cbs_table, "ANS", "ANS", ans_cmd);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1182 msn_table_add_cmd(cbs_table, "ANS", "IRO", iro_cmd);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1183
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1184 msn_table_add_cmd(cbs_table, "MSG", "ACK", ack_cmd);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1185 msn_table_add_cmd(cbs_table, "MSG", "NAK", nak_cmd);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1186
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1187 msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1188
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1189 msn_table_add_cmd(cbs_table, NULL, "MSG", msg_cmd);
13870
258d48d6ab52 [gaim-migrate @ 16737]
Ma Yuan <mayuan2006@gmail.com>
parents: 13861
diff changeset
1190 msn_table_add_cmd(cbs_table, NULL, "UBM", ubm_cmd);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1191 msn_table_add_cmd(cbs_table, NULL, "JOI", joi_cmd);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1192 msn_table_add_cmd(cbs_table, NULL, "BYE", bye_cmd);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1193 msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1194
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1195 #if 0
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1196 /* They might skip the history */
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1197 msn_table_add_cmd(cbs_table, NULL, "ACK", NULL);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1198 #endif
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1199
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1200 msn_table_add_error(cbs_table, "MSG", msg_error);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1201 msn_table_add_error(cbs_table, "CAL", cal_error);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1202
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1203 /* Register the message type callbacks. */
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1204 msn_table_add_msg_type(cbs_table, "text/plain",
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25473
diff changeset
1205 msn_plain_msg);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1206 msn_table_add_msg_type(cbs_table, "text/x-msmsgscontrol",
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25473
diff changeset
1207 msn_control_msg);
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1208 msn_table_add_msg_type(cbs_table, "text/x-clientcaps",
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1209 clientcaps_msg);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1210 msn_table_add_msg_type(cbs_table, "text/x-clientinfo",
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1211 clientcaps_msg);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1212 msn_table_add_msg_type(cbs_table, "application/x-msnmsgrp2p",
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1213 msn_p2p_msg);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1214 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
1215 msn_emoticon_msg);
11518
c1c6ea0117d8 [gaim-migrate @ 13763]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
1216 msn_table_add_msg_type(cbs_table, "text/x-mms-animemoticon",
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25473
diff changeset
1217 msn_emoticon_msg);
11321
a93121c0ea16 [gaim-migrate @ 13525]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10806
diff changeset
1218 msn_table_add_msg_type(cbs_table, "text/x-msnmsgr-datacast",
25538
22182aef4300 Move some MSN message handlers from switchboard to general msg.c.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25473
diff changeset
1219 msn_datacast_msg);
26739
ee13fa0be1a6 Notify the user if a contact invites them to a voice call over MSN.
Michael Ruprecht <maiku@pidgin.im>
parents: 26474
diff changeset
1220 msn_table_add_msg_type(cbs_table, "text/x-msmsgsinvite",
10345
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1221 msn_invite_msg);
27569
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1222 msn_table_add_msg_type(cbs_table, "image/gif",
7f08e35e35ac Add support for receiving handwritten (Ink) messages from MSN buddies.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26739
diff changeset
1223 msn_handwritten_msg);
10345
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
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1226 void
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1227 msn_switchboard_end(void)
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1228 {
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1229 msn_table_destroy(cbs_table);
7d7f8cfa2b4f [gaim-migrate @ 11556]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10306
diff changeset
1230 }

mercurial