libpurple/protocols/msn/session.c

Sun, 23 Nov 2014 23:20:53 -0500

author
Daniel Atallah <datallah@pidgin.im>
date
Sun, 23 Nov 2014 23:20:53 -0500
changeset 36281
017310ea69c0
parent 36252
20185d4dacbb
parent 36265
26ad8040bdb4
permissions
-rw-r--r--

Merge with release-2.x.y (with a number of conflicts)

* Lots of po files conflicted and I just chose the files from default.

5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /**
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * @file session.c MSN session functions
3178acad1449 [gaim-migrate @ 5681]
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
5309
3178acad1449 [gaim-migrate @ 5681]
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: 9193
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: 9193
diff changeset
8 * source distribution.
6701
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 5564
diff changeset
9 *
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * (at your option) any later version.
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 *
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * GNU General Public License for more details.
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 *
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
3178acad1449 [gaim-migrate @ 5681]
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: 17686
diff changeset
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
5309
3178acad1449 [gaim-migrate @ 5681]
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: 30944
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: 30945
diff changeset
25 #include "internal.h"
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30944
diff changeset
26 #include "debug.h"
34227
6d016a081401 HTTP: migrate purple_util_fetch_url to new API for prpls
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34108
diff changeset
27 #include "http.h"
30945
b875cf477e19 Remove unnecesary includes from msn.h.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30944
diff changeset
28
30911
e0a4f4418d83 msn: Merge dialog and error to get an unified msn_error api.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 29447
diff changeset
29 #include "error.h"
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27635
diff changeset
30 #include "msnutils.h"
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 #include "session.h"
7288
486e8b44a14b [gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents: 6827
diff changeset
32 #include "notification.h"
21361
f890366c8ec6 oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@pidgin.im>
parents: 21360
diff changeset
33 #include "oim.h"
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
34
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 MsnSession *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
36 msn_session_new(PurpleAccount *account)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
37 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
38 MsnSession *session;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
39
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
40 g_return_val_if_fail(account != NULL, NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
41
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
42 session = g_new0(MsnSession, 1);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
43
34269
26b4c9a54166 HTTP: Use PurpleHttpConnectionSet instead of GSLists of PurpleHttpConnection structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34265
diff changeset
44 session->http_reqs = purple_http_connection_set_new();
26b4c9a54166 HTTP: Use PurpleHttpConnectionSet instead of GSLists of PurpleHttpConnection structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34265
diff changeset
45
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
46 session->account = account;
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
47 session->notification = msn_notification_new(session);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
48 session->userlist = msn_userlist_new(session);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
49
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
50 session->user = msn_user_new(session->userlist,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
51 purple_account_get_username(account), NULL);
31482
a189fa1292c9 Fix a memleak in the MSN prpl when removing a buddy from your buddy list.
Mark Doliner <markdoliner@pidgin.im>
parents: 31224
diff changeset
52 msn_userlist_add_user(session->userlist, session->user);
21361
f890366c8ec6 oim migrated to new soap code, quadruply duplicated message!
Ka-Hing Cheung <khc@pidgin.im>
parents: 21360
diff changeset
53 session->oim = msn_oim_new(session);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
54
29421
4259f9512ab4 Fix MSN protocol version detection to use the best version returned by the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29420
diff changeset
55 session->protocol_ver = 0;
31210
0aa08cb723ac Replace the mpop account setting with a session boolean, because I
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31198
diff changeset
56 session->enable_mpop = TRUE; /* Default only */
6701
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 5564
diff changeset
57
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27635
diff changeset
58 session->guid = rand_guid();
6701
7e2db9273748 [gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents: 5564
diff changeset
59
34265
e6de87604147 HTTP: get rid of the second msn's own HTTP implementation (for soap)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34227
diff changeset
60 session->soap = msn_soap_service_new(session);
e6de87604147 HTTP: get rid of the second msn's own HTTP implementation (for soap)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34227
diff changeset
61
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
62 return session;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
63 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
64
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
65 void
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
66 msn_session_destroy(MsnSession *session)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
67 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
68 g_return_if_fail(session != NULL);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69
10296
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
70 session->destroying = TRUE;
9badf1cedc6e [gaim-migrate @ 11476]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10284
diff changeset
71
34269
26b4c9a54166 HTTP: Use PurpleHttpConnectionSet instead of GSLists of PurpleHttpConnection structs
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34265
diff changeset
72 purple_http_connection_set_destroy(session->http_reqs);
30579
458621d24012 Save and cancel-on-exit any URL requests, instead of checking the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30527
diff changeset
73
24017
c413ed3e4bdb I guess I re-arranged a little off. We probably should disconnect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24004
diff changeset
74 if (session->connected)
c413ed3e4bdb I guess I re-arranged a little off. We probably should disconnect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24004
diff changeset
75 msn_session_disconnect(session);
c413ed3e4bdb I guess I re-arranged a little off. We probably should disconnect
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24004
diff changeset
76
34265
e6de87604147 HTTP: get rid of the second msn's own HTTP implementation (for soap)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34227
diff changeset
77 msn_soap_service_destroy(session->soap);
24004
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
78
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
79 while (session->slplinks != NULL)
31032
b25150599f00 Hide msn_slplink_destroy and use the unref version everywhere.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30961
diff changeset
80 msn_slplink_unref(session->slplinks->data);
24004
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
81
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
82 while (session->switches != NULL)
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
83 msn_switchboard_destroy(session->switches->data);
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
84
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
85 if (session->oim != NULL)
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
86 msn_oim_destroy(session->oim);
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
87
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
88 if (session->nexus != NULL)
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
89 msn_nexus_destroy(session->nexus);
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
90
54237efbb963 Re-arrange msn_session_destroy to avoid use-after-free bugs. I don't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24003
diff changeset
91 if (session->user != NULL)
30944
4f1fc7c401fd Remove msn_user_destroy in favor of msn_user_unref.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 30929
diff changeset
92 msn_user_unref(session->user);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
94 if (session->notification != NULL)
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
95 msn_notification_destroy(session->notification);
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
96
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
97 msn_userlist_destroy(session->userlist);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98
21906
3827b1442a73 memleak fixes
Ka-Hing Cheung <khc@pidgin.im>
parents: 21503
diff changeset
99 g_free(session->psm);
29420
c81c525111db Initial support for msnp16, based on patch by Masca.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27635
diff changeset
100 g_free(session->guid);
25614
36aaca179437 Save and use the CacheKey for ABCH SOAP requests.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25612
diff changeset
101 g_free(session->abch_cachekey);
25612
4ae731d8c3da Comment out this extra string until we need it (if ever).
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25184
diff changeset
102 #if 0
23789
3ef57c5a8d9c Properly parse (most of) the MSN GCF command. Provides a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23780
diff changeset
103 g_free(session->blocked_text);
25612
4ae731d8c3da Comment out this extra string until we need it (if ever).
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25184
diff changeset
104 #endif
23789
3ef57c5a8d9c Properly parse (most of) the MSN GCF command. Provides a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23780
diff changeset
105
13695
64da09d24cbe [gaim-migrate @ 16096]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13635
diff changeset
106 g_free(session->passport_info.sid);
64da09d24cbe [gaim-migrate @ 16096]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13635
diff changeset
107 g_free(session->passport_info.mspauth);
64da09d24cbe [gaim-migrate @ 16096]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13635
diff changeset
108 g_free(session->passport_info.client_ip);
23924
1f8e75759bf3 Use a URL to open MSN Hotmail inbox instead of a temporary file.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23866
diff changeset
109 g_free(session->passport_info.mail_url);
5427
a45fa07ef20d [gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents: 5354
diff changeset
110
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
111 g_free(session);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
112 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
113
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
114 gboolean
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
115 msn_session_connect(MsnSession *session, const char *host, int port,
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
116 gboolean http_method)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
117 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
118 g_return_val_if_fail(session != NULL, FALSE);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
119 g_return_val_if_fail(!session->connected, TRUE);
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
120
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
121 session->connected = TRUE;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
122 session->http_method = http_method;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
123
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
124 if (session->notification == NULL)
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
125 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
126 purple_debug_error("msn", "This shouldn't happen\n");
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
127 g_return_val_if_reached(FALSE);
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
128 }
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
129
24605
ad3ade4ebb0b Get rid of an unnecessary if statement, and don't try to unref a
Mark Doliner <markdoliner@pidgin.im>
parents: 24017
diff changeset
130 return msn_notification_connect(session->notification, host, port);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
131 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
132
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
133 void
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
134 msn_session_disconnect(MsnSession *session)
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
135 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
136 g_return_if_fail(session != NULL);
20843
6d796c938192 Prevent an assertion (w/ G_DEBUG=fatal_warnings) when the connection drops.
Daniel Atallah <datallah@pidgin.im>
parents: 20658
diff changeset
137
6d796c938192 Prevent an assertion (w/ G_DEBUG=fatal_warnings) when the connection drops.
Daniel Atallah <datallah@pidgin.im>
parents: 20658
diff changeset
138 if (!session->connected)
6d796c938192 Prevent an assertion (w/ G_DEBUG=fatal_warnings) when the connection drops.
Daniel Atallah <datallah@pidgin.im>
parents: 20658
diff changeset
139 return;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
140
30527
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
141 if (session->login_timeout) {
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
142 purple_timeout_remove(session->login_timeout);
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
143 session->login_timeout = 0;
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
144 }
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
145
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
146 session->connected = FALSE;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
147
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8831
diff changeset
148 while (session->switches != NULL)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
149 msn_switchboard_close(session->switches->data);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
150
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
151 if (session->notification != NULL)
10463
f2f97738b401 [gaim-migrate @ 11737]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10345
diff changeset
152 msn_notification_close(session->notification);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
153 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
154
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
155 /* TODO: This must go away when conversation is redesigned */
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
156 MsnSwitchBoard *
10621
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
157 msn_session_find_swboard(MsnSession *session, const char *username)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
158 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
159 GList *l;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
160
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8831
diff changeset
161 g_return_val_if_fail(session != NULL, NULL);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
162 g_return_val_if_fail(username != NULL, NULL);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
163
8499
bbe91550c012 [gaim-migrate @ 9235]
Robert Mibus <mibus@mibus.org>
parents: 8475
diff changeset
164 for (l = session->switches; l != NULL; l = l->next)
bbe91550c012 [gaim-migrate @ 9235]
Robert Mibus <mibus@mibus.org>
parents: 8475
diff changeset
165 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
166 MsnSwitchBoard *swboard;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
167
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
168 swboard = l->data;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
169
10621
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
170 if ((swboard->im_user != NULL) && !strcmp(username, swboard->im_user))
10602
111ed237f509 [gaim-migrate @ 12032]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10589
diff changeset
171 return swboard;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
172 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
173
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
174 return NULL;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
175 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
176
34636
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
177 static PurpleIMConversation *
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
178 msn_session_get_im(MsnSession *session,const char *passport)
13871
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
179 {
20478
46933dc62880 propagate from branch 'im.pidgin.pidgin' (head 88b7040408c88e4516c008f4eac579f98ef53e85)
Richard Laager <rlaager@pidgin.im>
parents: 20473 15884
diff changeset
180 PurpleAccount *account;
34636
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
181 PurpleIMConversation * im;
13871
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
182
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
183 g_return_val_if_fail(session != NULL, NULL);
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
184 account = session->account;
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
185
34636
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
186 im = purple_conversations_find_im_with_account(passport, account);
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
187 if(im == NULL){
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
188 im = purple_im_conversation_new(account, passport);
13871
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
189 }
34636
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
190 return im;
13871
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
191 }
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
192
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
193 /* put Message to User Conversation
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
194 *
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
195 * passport - the one want to talk to you
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
196 */
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
197 void
23802
61305f9c37e1 Make errors when sending OIM's more visible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23789
diff changeset
198 msn_session_report_user(MsnSession *session,const char *passport,const char *msg,PurpleMessageFlags flags)
13871
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
199 {
34636
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
200 PurpleIMConversation * im;
13871
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
201
34636
cfbdf3297c99 Refactored msn protocol to use GObject-based PurpleConversation
Ankit Vani <a@nevitus.org>
parents: 34627
diff changeset
202 if ((im = msn_session_get_im(session,passport)) != NULL){
36091
bb03db248026 Push two remaining purple_conversation_write_system_message
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35827
diff changeset
203 purple_conversation_write_system_message(
bb03db248026 Push two remaining purple_conversation_write_system_message
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35827
diff changeset
204 PURPLE_CONVERSATION(im), msg, flags);
13871
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
205 }
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
206 }
db7573a9b767 [gaim-migrate @ 16758]
Ma Yuan <mayuan2006@gmail.com>
parents: 13858
diff changeset
207
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
208 MsnSwitchBoard *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
209 msn_session_find_swboard_with_conv(MsnSession *session, PurpleConversation *conv)
10621
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
210 {
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
211 GList *l;
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
212
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
213 g_return_val_if_fail(session != NULL, NULL);
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
214 g_return_val_if_fail(conv != NULL, NULL);
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
215
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
216 for (l = session->switches; l != NULL; l = l->next)
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
217 {
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
218 MsnSwitchBoard *swboard;
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
219
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
220 swboard = l->data;
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
221
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
222 if (swboard->conv == conv)
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
223 return swboard;
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
224 }
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
225
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
226 return NULL;
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
227 }
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
228
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
229 MsnSwitchBoard *
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
230 msn_session_find_swboard_with_id(const MsnSession *session, int chat_id)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
231 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
232 GList *l;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
233
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
234 g_return_val_if_fail(session != NULL, NULL);
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
235 g_return_val_if_fail(chat_id >= 0, NULL);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
236
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8831
diff changeset
237 for (l = session->switches; l != NULL; l = l->next)
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8831
diff changeset
238 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
239 MsnSwitchBoard *swboard;
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
240
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
241 swboard = l->data;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
242
10621
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
243 if (swboard->chat_id == chat_id)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
244 return swboard;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
245 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
246
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
247 return NULL;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
248 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
249
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
250 MsnSwitchBoard *
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10751
diff changeset
251 msn_session_get_swboard(MsnSession *session, const char *username,
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10751
diff changeset
252 MsnSBFlag flag)
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
253 {
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
254 MsnSwitchBoard *swboard;
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
255
13635
dcbce56b7713 [gaim-migrate @ 16032]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11992
diff changeset
256 g_return_val_if_fail(session != NULL, NULL);
dcbce56b7713 [gaim-migrate @ 16032]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11992
diff changeset
257
10621
2b214ffb112b [gaim-migrate @ 12090]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10602
diff changeset
258 swboard = msn_session_find_swboard(session, username);
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
259
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
260 if (swboard == NULL)
9158
f8dab42adeaf [gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 8831
diff changeset
261 {
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
262 swboard = msn_switchboard_new(session);
10225
0dfea1bc8695 [gaim-migrate @ 11357]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10112
diff changeset
263 swboard->im_user = g_strdup(username);
32008
56d1c64759d6 Fix a crash when the account is disconnected and we have requested a SB. (Hanzz, ported by shlomif)(Fixes #12431)
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31994
diff changeset
264 if (msn_switchboard_request(swboard))
56d1c64759d6 Fix a crash when the account is disconnected and we have requested a SB. (Hanzz, ported by shlomif)(Fixes #12431)
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31994
diff changeset
265 msn_switchboard_request_add_user(swboard, username);
56d1c64759d6 Fix a crash when the account is disconnected and we have requested a SB. (Hanzz, ported by shlomif)(Fixes #12431)
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31994
diff changeset
266 else
56d1c64759d6 Fix a crash when the account is disconnected and we have requested a SB. (Hanzz, ported by shlomif)(Fixes #12431)
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 31994
diff changeset
267 return NULL;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
268 }
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
269
10773
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10751
diff changeset
270 swboard->flag |= flag;
ef88ffed66eb [gaim-migrate @ 12382]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10751
diff changeset
271
9193
6e76f1367896 [gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9158
diff changeset
272 return swboard;
5309
3178acad1449 [gaim-migrate @ 5681]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
273 }
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
274
30527
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
275 static gboolean
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
276 msn_login_timeout_cb(gpointer data)
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
277 {
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
278 MsnSession *session = data;
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
279 /* This forces the login process to finish, even though we haven't heard
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
280 a response for our FQY requests yet. We'll at least end up online to the
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
281 people we've already added. The rest will follow later. */
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
282 msn_session_finish_login(session);
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
283 session->login_timeout = 0;
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
284 return FALSE;
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
285 }
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
286
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
287 void
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
288 msn_session_activate_login_timeout(MsnSession *session)
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
289 {
30716
422e72266bd5 Fix a possible crash reported by HanzZ. Fix thanks to HanzZ also.
Jan Kaluza <hanzz.k@gmail.com>
parents: 30579
diff changeset
290 if (!session->logged_in && session->connected) {
31994
06a7154ee8dd Don't accidentally add a second login timeout. This shouldn't happen
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31482
diff changeset
291 if (session->login_timeout)
06a7154ee8dd Don't accidentally add a second login timeout. This shouldn't happen
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31482
diff changeset
292 purple_timeout_remove(session->login_timeout);
30527
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
293 session->login_timeout =
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
294 purple_timeout_add_seconds(MSN_LOGIN_FQY_TIMEOUT,
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
295 msn_login_timeout_cb, session);
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
296 }
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
297 }
1f37f8bc501a Add a timeout which forces the login process to complete. This won't
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30525
diff changeset
298
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
299 static void
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
300 msn_session_sync_users(MsnSession *session)
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
301 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
302 PurpleConnection *gc = purple_account_get_connection(session->account);
23090
9a987bea8364 Make MSN buddy list synchronization more forgiving, only ask about
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22164
diff changeset
303 GList *to_remove = NULL;
27199
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
304 GSList *buddies;
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
305
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11303
diff changeset
306 g_return_if_fail(gc != NULL);
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
307
11992
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11303
diff changeset
308 /* The core used to use msn_add_buddy to add all buddies before
906176cc9b22 [gaim-migrate @ 14285]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11303
diff changeset
309 * being logged in. This no longer happens, so we manually iterate
20658
91594d39738c Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok. Fixes #3204.
Daniel Atallah <datallah@pidgin.im>
parents: 20597
diff changeset
310 * over the whole buddy list to identify sync issues.
13899
495981413953 [gaim-migrate @ 17055]
Ma Yuan <mayuan2006@gmail.com>
parents: 13871
diff changeset
311 */
34728
8efd73063ecf Renamed buddy list functions to more appropriate/simler names.
Ankit Vani <a@nevitus.org>
parents: 34640
diff changeset
312 for (buddies = purple_blist_find_buddies(session->account, NULL); buddies;
27199
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
313 buddies = g_slist_delete_link(buddies, buddies)) {
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
314 PurpleBuddy *buddy = buddies->data;
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
315 const gchar *buddy_name = purple_buddy_get_name(buddy);
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
316 const gchar *group_name = purple_group_get_name(purple_buddy_get_group(buddy));
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
317 MsnUser *remote_user;
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
318 gboolean found = FALSE;
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
319
27199
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
320 remote_user = msn_userlist_find_user(session->userlist, buddy_name);
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
321 if (remote_user && remote_user->list_op & MSN_LIST_FL_OP) {
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
322 GList *l;
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
323 for (l = remote_user->group_ids; l; l = l->next) {
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
324 const char *name = msn_userlist_find_group_name(remote_user->userlist, l->data);
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
325 if (name && !g_ascii_strcasecmp(group_name, name)) {
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
326 found = TRUE;
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
327 break;
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
328 }
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
329 }
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
330
27199
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
331 /* We don't care if they're in a different group, as long as they're on the
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
332 * list somewhere. If we check for the group, we cause pain, agony and
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
333 * suffering for people who decide to re-arrange their buddy list elsewhere.
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
334 */
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
335 if (!found) {
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
336 if ((remote_user == NULL) || !(remote_user->list_op & MSN_LIST_FL_OP)) {
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
337 /* The user is not on the server list */
30911
e0a4f4418d83 msn: Merge dialog and error to get an unified msn_error api.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 29447
diff changeset
338 msn_error_sync_issue(session, buddy_name, group_name);
27199
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
339 } else {
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
340 /* The user is not in that group on the server list */
ab2af9d15cba Use purple_find_buddies() instead of iterating the buddy list.
Paul Aurich <darkrain42@pidgin.im>
parents: 26726
diff changeset
341 to_remove = g_list_prepend(to_remove, buddy);
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
342 }
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
343 }
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
344 }
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
345 }
23090
9a987bea8364 Make MSN buddy list synchronization more forgiving, only ask about
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22164
diff changeset
346
9a987bea8364 Make MSN buddy list synchronization more forgiving, only ask about
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22164
diff changeset
347 if (to_remove != NULL) {
9a987bea8364 Make MSN buddy list synchronization more forgiving, only ask about
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22164
diff changeset
348 g_list_foreach(to_remove, (GFunc)purple_blist_remove_buddy, NULL);
23092
7e1f02514b9c unleak (thanks sadrul!)
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 23090
diff changeset
349 g_list_free(to_remove);
23090
9a987bea8364 Make MSN buddy list synchronization more forgiving, only ask about
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22164
diff changeset
350 }
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
351 }
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
352
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
353 void
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
354 msn_session_set_error(MsnSession *session, MsnErrorType error,
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
355 const char *info)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
356 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
357 PurpleConnection *gc;
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
358 PurpleConnectionError reason;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
359 char *msg;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
360
24003
0676aec9bb8e Don't try to report a connection error if the MSN session is being
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23924
diff changeset
361 if (session->destroying)
0676aec9bb8e Don't try to report a connection error if the MSN session is being
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23924
diff changeset
362 return;
0676aec9bb8e Don't try to report a connection error if the MSN session is being
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23924
diff changeset
363
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
364 gc = purple_account_get_connection(session->account);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
365
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
366 switch (error)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
367 {
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
368 case MSN_ERROR_SERVCONN:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
369 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
370 msg = g_strdup(info);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
371 break;
10519
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
372 case MSN_ERROR_UNSUPPORTED_PROTOCOL:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
373 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
374 msg = g_strdup(_("Our protocol is not supported by the "
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27199
diff changeset
375 "server"));
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
376 break;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
377 case MSN_ERROR_HTTP_MALFORMED:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
378 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27199
diff changeset
379 msg = g_strdup(_("Error parsing HTTP"));
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
380 break;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
381 case MSN_ERROR_SIGN_OTHER:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
382 reason = PURPLE_CONNECTION_ERROR_NAME_IN_USE;
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27199
diff changeset
383 msg = g_strdup(_("You have signed on from another location"));
20658
91594d39738c Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok. Fixes #3204.
Daniel Atallah <datallah@pidgin.im>
parents: 20597
diff changeset
384 if (!purple_account_get_remember_password(session->account))
34029
059c1270db1f Remove the silly destroy argument from purple_account_set_password and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34028
diff changeset
385 purple_account_set_password(session->account, NULL, NULL, NULL);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
386 break;
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
387 case MSN_ERROR_SERV_UNAVAILABLE:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
388 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
10568
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
389 msg = g_strdup(_("The MSN servers are temporarily "
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
390 "unavailable. Please wait and try "
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
391 "again."));
15f02c0e7fc1 [gaim-migrate @ 11954]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10533
diff changeset
392 break;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
393 case MSN_ERROR_SERV_DOWN:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
394 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
395 msg = g_strdup(_("The MSN servers are going down "
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27199
diff changeset
396 "temporarily"));
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
397 break;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
398 case MSN_ERROR_AUTH:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
399 reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
400 msg = g_strdup_printf(_("Unable to authenticate: %s"),
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
401 (info == NULL ) ?
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
402 _("Unknown error") : info);
30525
09042ad2f660 Clear the password on an MSN account if saving is disabled and the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30059
diff changeset
403 /* Clear the password if it isn't being saved */
09042ad2f660 Clear the password on an MSN account if saving is disabled and the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30059
diff changeset
404 if (!purple_account_get_remember_password(session->account))
34029
059c1270db1f Remove the silly destroy argument from purple_account_set_password and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34028
diff changeset
405 purple_account_set_password(session->account, NULL, NULL, NULL);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
406 break;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
407 case MSN_ERROR_BAD_BLIST:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
408 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
36251
ee51d84aacbf msn: Hard fail if buddy list is unavailable.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32091
diff changeset
409 msg = g_strdup_printf(_("Your MSN buddy list is temporarily "
ee51d84aacbf msn: Hard fail if buddy list is unavailable.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32091
diff changeset
410 "unavailable: %s"),
36265
26ad8040bdb4 Typo ("Unknorn error" -> "Unknown error")
Bjoern Voigt <bjoern@cs.tu-berlin.de>
parents: 36251
diff changeset
411 (info == NULL) ? _("Unknown error") : info);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
412 break;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
413 default:
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
414 reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27199
diff changeset
415 msg = g_strdup(_("Unknown error"));
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
416 break;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
417 }
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
418
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
419 msn_session_disconnect(session);
10533
4c2ad22fad20 [gaim-migrate @ 11862]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10519
diff changeset
420
32157
39ba2e2492ee Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <markdoliner@pidgin.im>
parents: 32008
diff changeset
421 purple_connection_error(gc, reason, msg);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
422
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
423 g_free(msg);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
424 }
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
425
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
426 static const char *
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
427 get_login_step_text(MsnSession *session)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
428 {
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
429 const char *steps_text[] = {
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
430 _("Connecting"),
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
431 _("Handshaking"),
10514
3d6cb5d53e97 [gaim-migrate @ 11814]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10504
diff changeset
432 _("Transferring"),
3d6cb5d53e97 [gaim-migrate @ 11814]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10504
diff changeset
433 _("Handshaking"),
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
434 _("Starting authentication"),
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
435 _("Getting cookie"),
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
436 _("Authenticating"),
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
437 _("Sending cookie"),
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
438 _("Retrieving buddy list")
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
439 };
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
440
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
441 return steps_text[session->login_step];
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
442 }
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
443
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
444 void
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
445 msn_session_set_login_step(MsnSession *session, MsnLoginStep step)
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
446 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
447 PurpleConnection *gc;
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
448
10519
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
449 /* Prevent the connection progress going backwards, eg. if we get
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
450 * transferred several times during login */
30059
494d4fe51606 Don't bother updating the login progress if the step didn't change
Mark Doliner <markdoliner@pidgin.im>
parents: 27635
diff changeset
451 if (session->login_step >= step)
10519
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
452 return;
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
453
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
454 /* If we're already logged in, we're probably here because of a
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
455 * mid-session XFR from the notification server, so we don't want to
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
456 * popup the connection progress dialog */
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
457 if (session->logged_in)
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
458 return;
80801a34a246 [gaim-migrate @ 11833]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10514
diff changeset
459
32438
dc8991868906 A boring and large patch so I can merge heads.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32157
diff changeset
460 gc = purple_account_get_connection(session->account);
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
461
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
462 session->login_step = step;
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
463
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
464 purple_connection_update_progress(gc, get_login_step_text(session), step,
10481
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
465 MSN_LOGIN_STEPS);
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
466 }
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
467
a5d6b8e1717d [gaim-migrate @ 11769]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 10463
diff changeset
468 void
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
469 msn_session_finish_login(MsnSession *session)
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
470 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
471 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
472 PurpleConnection *gc;
35827
c7c855c36c9b imgstore: unref msn
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34870
diff changeset
473 PurpleImage *img;
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
474
25184
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
475 if (!session->logged_in) {
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
476 account = session->account;
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
477 gc = purple_account_get_connection(account);
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
478
25184
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
479 img = purple_buddy_icons_find_account_icon(session->account);
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
480 /* TODO: Do we really want to call this if img is NULL? */
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
481 msn_user_set_buddy_icon(session->user, img);
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
482 if (img != NULL)
35827
c7c855c36c9b imgstore: unref msn
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34870
diff changeset
483 g_object_unref(img);
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
484
25184
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
485 session->logged_in = TRUE;
34746
dc9c911dbd35 Started GObjectification of PurpleConnection.
Ankit Vani <a@nevitus.org>
parents: 34728
diff changeset
486 purple_connection_set_state(gc, PURPLE_CONNECTION_CONNECTED);
10908
15694532c3c6 [gaim-migrate @ 12640]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10773
diff changeset
487
25184
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
488 /* Sync users */
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
489 msn_session_sync_users(session);
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
490 }
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
491
32091
5061380d9fee Pluck all MSNP18 changes. This is pretty much to fix sending OIMs.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32008
diff changeset
492 /* TODO: Send this when updating status instead? */
5061380d9fee Pluck all MSNP18 changes. This is pretty much to fix sending OIMs.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32008
diff changeset
493 msn_notification_send_uux_endpointdata(session);
5061380d9fee Pluck all MSNP18 changes. This is pretty much to fix sending OIMs.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32008
diff changeset
494 msn_notification_send_uux_private_endpointdata(session);
5061380d9fee Pluck all MSNP18 changes. This is pretty much to fix sending OIMs.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32008
diff changeset
495
25184
e984d431ddca Actually that last change did break regular login, but I don't feel like
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25182
diff changeset
496 msn_change_status(session);
10044
884c09b189e6 [gaim-migrate @ 11003]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9198
diff changeset
497 }
20473
91e1b3a49d10 msn.tgz from SF Patch #1621854 from Ka-Hing Cheung
Ka-Hing Cheung <khc@pidgin.im>
parents: 20472
diff changeset
498

mercurial