Wed, 07 Jul 2004 16:32:05 +0000
[gaim-migrate @ 10300]
(12:01:33) nosnilmot: LSchiere: I commented nearly every entry in
GaimPluginProtocolInfo in nearly all prpls
committer: Luke Schierer <lschiere@pidgin.im>
| 5309 | 1 | /** |
| 2 | * @file session.c MSN session functions | |
| 3 | * | |
| 4 | * gaim | |
| 5 | * | |
|
9198
e8eb6d5eb9eb
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
9193
diff
changeset
|
6 | * Gaim is the legal property of its developers, whose names are too numerous |
|
e8eb6d5eb9eb
[gaim-migrate @ 9993]
Christian Hammond <chipx86@chipx86.com>
parents:
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 | 10 | * This program is free software; you can redistribute it and/or modify |
| 11 | * it under the terms of the GNU General Public License as published by | |
| 12 | * the Free Software Foundation; either version 2 of the License, or | |
| 13 | * (at your option) any later version. | |
| 14 | * | |
| 15 | * This program is distributed in the hope that it will be useful, | |
| 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 18 | * GNU General Public License for more details. | |
| 19 | * | |
| 20 | * You should have received a copy of the GNU General Public License | |
| 21 | * along with this program; if not, write to the Free Software | |
| 22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 23 | */ | |
| 24 | #include "msn.h" | |
| 25 | #include "session.h" | |
|
7288
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
6827
diff
changeset
|
26 | #include "notification.h" |
| 5309 | 27 | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
28 | #include "slplink.h" |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
29 | |
| 5309 | 30 | MsnSession * |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
31 | msn_session_new(GaimAccount *account, const char *host, int port, |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
32 | gboolean http_method) |
| 5309 | 33 | { |
| 34 | MsnSession *session; | |
| 35 | ||
| 36 | g_return_val_if_fail(account != NULL, NULL); | |
| 37 | ||
| 38 | session = g_new0(MsnSession, 1); | |
| 39 | ||
|
9158
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
40 | session->account = account; |
|
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
41 | session->dispatch_host = g_strdup(host); |
|
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
42 | session->dispatch_port = port; |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
43 | session->http_method = http_method; |
| 5309 | 44 | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
45 | session->notification = msn_notification_new(session); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
46 | session->userlist = msn_userlist_new(session); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
47 | |
|
6701
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
48 | session->protocol_ver = 9; |
|
7e2db9273748
[gaim-migrate @ 7227]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
49 | |
| 5309 | 50 | return session; |
| 51 | } | |
| 52 | ||
| 53 | void | |
| 54 | msn_session_destroy(MsnSession *session) | |
| 55 | { | |
| 56 | g_return_if_fail(session != NULL); | |
| 57 | ||
| 58 | if (session->connected) | |
| 59 | msn_session_disconnect(session); | |
| 60 | ||
|
9158
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
61 | if (session->dispatch_host != NULL) |
|
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
62 | g_free(session->dispatch_host); |
| 5309 | 63 | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
64 | if (session->notification != NULL) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
65 | msn_notification_destroy(session->notification); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
66 | |
| 5309 | 67 | while (session->switches != NULL) |
| 68 | msn_switchboard_destroy(session->switches->data); | |
| 69 | ||
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
70 | while (session->slplinks != NULL) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
71 | msn_slplink_destroy(session->slplinks->data); |
| 5309 | 72 | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
73 | msn_userlist_destroy(session->userlist); |
| 5309 | 74 | |
|
6827
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
75 | if (session->passport_info.kv != NULL) |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
76 | g_free(session->passport_info.kv); |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
77 | |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
78 | if (session->passport_info.sid != NULL) |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
79 | g_free(session->passport_info.sid); |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
80 | |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
81 | if (session->passport_info.mspauth != NULL) |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
82 | g_free(session->passport_info.mspauth); |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
83 | |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
84 | if (session->passport_info.file != NULL) |
|
df4411142ece
[gaim-migrate @ 7372]
Christian Hammond <chipx86@chipx86.com>
parents:
6779
diff
changeset
|
85 | g_free(session->passport_info.file); |
|
5427
a45fa07ef20d
[gaim-migrate @ 5806]
Mark Doliner <markdoliner@pidgin.im>
parents:
5354
diff
changeset
|
86 | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
87 | if (session->sync != NULL) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
88 | msn_sync_destroy(session->sync); |
|
7590
54b26062c7e0
[gaim-migrate @ 8208]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
89 | |
|
8171
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7590
diff
changeset
|
90 | if (session->nexus != NULL) |
|
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7590
diff
changeset
|
91 | msn_nexus_destroy(session->nexus); |
|
c3c43a25caec
[gaim-migrate @ 8884]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
7590
diff
changeset
|
92 | |
| 5309 | 93 | g_free(session); |
| 94 | } | |
| 95 | ||
| 96 | gboolean | |
| 97 | msn_session_connect(MsnSession *session) | |
| 98 | { | |
| 99 | g_return_val_if_fail(session != NULL, FALSE); | |
| 100 | g_return_val_if_fail(!session->connected, TRUE); | |
| 101 | ||
| 102 | session->connected = TRUE; | |
| 103 | ||
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
104 | if (msn_notification_connect(session->notification, |
|
9158
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
105 | session->dispatch_host, |
|
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
106 | session->dispatch_port)) |
| 8831 | 107 | { |
| 108 | return TRUE; | |
|
7288
486e8b44a14b
[gaim-migrate @ 7869]
Christian Hammond <chipx86@chipx86.com>
parents:
6827
diff
changeset
|
109 | } |
| 5309 | 110 | |
| 111 | return FALSE; | |
| 112 | } | |
| 113 | ||
| 114 | void | |
| 115 | msn_session_disconnect(MsnSession *session) | |
| 116 | { | |
| 117 | g_return_if_fail(session != NULL); | |
| 118 | g_return_if_fail(session->connected); | |
| 119 | ||
|
9158
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
120 | while (session->switches != NULL) |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
121 | msn_switchboard_destroy(session->switches->data); |
| 5309 | 122 | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
123 | if (session->notification != NULL) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
124 | msn_notification_disconnect(session->notification); |
| 5309 | 125 | } |
| 126 | ||
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
127 | /* TODO: This must go away when conversation is redesigned */ |
|
7590
54b26062c7e0
[gaim-migrate @ 8208]
Christian Hammond <chipx86@chipx86.com>
parents:
7288
diff
changeset
|
128 | |
| 5309 | 129 | MsnSwitchBoard * |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
130 | msn_session_find_swboard(MsnSession *session, const char *username) |
| 5309 | 131 | { |
| 132 | GList *l; | |
| 133 | ||
|
9158
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
134 | g_return_val_if_fail(session != NULL, NULL); |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
135 | g_return_val_if_fail(username != NULL, NULL); |
| 5309 | 136 | |
| 8499 | 137 | for (l = session->switches; l != NULL; l = l->next) |
| 138 | { | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
139 | MsnSwitchBoard *swboard; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
140 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
141 | swboard = l->data; |
| 5309 | 142 | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
143 | if (swboard->im_user != NULL) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
144 | if (!strcmp(username, swboard->im_user)) |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
145 | return swboard; |
| 5309 | 146 | } |
| 147 | ||
| 148 | return NULL; | |
| 149 | } | |
| 150 | ||
| 151 | MsnSwitchBoard * | |
| 152 | msn_session_find_switch_with_id(const MsnSession *session, int chat_id) | |
| 153 | { | |
| 154 | GList *l; | |
| 155 | ||
| 156 | g_return_val_if_fail(session != NULL, NULL); | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
157 | g_return_val_if_fail(chat_id >= 0, NULL); |
| 5309 | 158 | |
|
9158
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
159 | for (l = session->switches; l != NULL; l = l->next) |
|
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
160 | { |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
161 | MsnSwitchBoard *swboard; |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
162 | |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
163 | swboard = l->data; |
| 5309 | 164 | |
| 165 | if (swboard->chat_id == chat_id) | |
| 166 | return swboard; | |
| 167 | } | |
| 168 | ||
| 169 | return NULL; | |
| 170 | } | |
| 171 | ||
| 172 | MsnSwitchBoard * | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
173 | msn_session_get_swboard(MsnSession *session, const char *username) |
| 5309 | 174 | { |
| 175 | MsnSwitchBoard *swboard; | |
| 176 | ||
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
177 | swboard = msn_session_find_swboard(session, username); |
| 5309 | 178 | |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
179 | if (swboard == NULL) |
|
9158
f8dab42adeaf
[gaim-migrate @ 9942]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
8831
diff
changeset
|
180 | { |
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
181 | swboard = msn_switchboard_new(session); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
182 | msn_switchboard_request(swboard); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
183 | msn_switchboard_request_add_user(swboard, username); |
|
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
184 | swboard->im_user = g_strdup(username); |
| 5309 | 185 | } |
| 186 | ||
|
9193
6e76f1367896
[gaim-migrate @ 9988]
Felipe Contreras <felipe.contreras@gmail.com>
parents:
9158
diff
changeset
|
187 | return swboard; |
| 5309 | 188 | } |