Mercurial > pidgin.yaz
annotate src/connection.c @ 10197:7369bf2bf593
[gaim-migrate @ 11314]
More status fixes. Oscar kind of works... you can set yourself away,
invisible and available, but you can't choose the message for away,
can't choose an available message, and invisible only seems to work
the first time.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Wed, 17 Nov 2004 01:32:06 +0000 |
parents | 17dcff7a5c77 |
children | 56b53036e48c |
rev | line source |
---|---|
5563 | 1 /** |
2 * @file connection.c Connection API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
8046 | 7 * Gaim is the legal property of its developers, whose names are too numerous |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
5631 | 10 * |
5563 | 11 * This program is free software; you can redistribute it and/or modify |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 */ | |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
25 #include "internal.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
26 #include "blist.h" |
5563 | 27 #include "connection.h" |
5717 | 28 #include "debug.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
29 #include "log.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
30 #include "notify.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
31 #include "prefs.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
32 #include "request.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
33 #include "server.h" |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
34 #include "signals.h" |
6106 | 35 #include "util.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
36 |
5563 | 37 static GList *connections = NULL; |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
38 static GList *connections_connecting = NULL; |
5563 | 39 static GaimConnectionUiOps *connection_ui_ops = NULL; |
40 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
41 static int connections_handle; |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
42 |
5563 | 43 GaimConnection * |
44 gaim_connection_new(GaimAccount *account) | |
45 { | |
46 GaimConnection *gc; | |
47 | |
48 g_return_val_if_fail(account != NULL, NULL); | |
49 | |
50 gc = g_new0(GaimConnection, 1); | |
51 | |
7956 | 52 gc->prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); |
5563 | 53 |
54 gaim_connection_set_account(gc, account); | |
55 gaim_account_set_connection(account, gc); | |
56 | |
57 return gc; | |
58 } | |
59 | |
60 void | |
61 gaim_connection_destroy(GaimConnection *gc) | |
62 { | |
5741
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
63 GaimAccount *account; |
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
64 |
5563 | 65 g_return_if_fail(gc != NULL); |
66 | |
67 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { | |
68 gaim_connection_disconnect(gc); | |
69 | |
70 return; | |
71 } | |
72 | |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
73 gaim_debug(GAIM_DEBUG_INFO, "connection", |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
74 "Destroying connection %p\n", gc); |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
75 |
5741
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
76 account = gaim_connection_get_account(gc); |
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
77 gaim_account_set_connection(account, NULL); |
1b5e6e6e80e9
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
78 |
5563 | 79 if (gc->display_name != NULL) |
80 g_free(gc->display_name); | |
81 | |
6393 | 82 if (gc->disconnect_timeout) |
8287
ef881489396e
[gaim-migrate @ 9011]
Christian Hammond <chipx86@chipx86.com>
parents:
8273
diff
changeset
|
83 gaim_timeout_remove(gc->disconnect_timeout); |
6393 | 84 |
5563 | 85 g_free(gc); |
86 } | |
87 | |
6110 | 88 static void request_pass_ok_cb(GaimAccount *account, const char *entry) |
6109 | 89 { |
90 gaim_account_set_password(account, (*entry != '\0') ? entry : NULL); | |
91 | |
6110 | 92 gaim_account_connect(account); |
6109 | 93 } |
94 | |
6581 | 95 void |
96 gaim_connection_register(GaimConnection *gc) | |
97 { | |
98 GaimAccount *account; | |
99 GaimConnectionUiOps *ops; | |
100 GaimPluginProtocolInfo *prpl_info = NULL; | |
101 | |
102 g_return_if_fail(gc != NULL); | |
103 | |
8130
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
104 gaim_debug(GAIM_DEBUG_INFO, "connection", "Registering. gc = %p\n", gc); |
6581 | 105 |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
106 ops = gaim_connections_get_ui_ops(); |
6581 | 107 |
108 if (gc->prpl != NULL) | |
8130
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
109 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
110 else |
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
111 { |
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
112 gchar *message = g_strdup_printf(_("Missing protocol plugin for %s"), |
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
113 gaim_account_get_username(gaim_connection_get_account(gc))); |
6581 | 114 |
115 gaim_debug(GAIM_DEBUG_ERROR, "connection", | |
116 "Could not get prpl info for %p\n", gc); | |
117 gaim_notify_error(NULL, _("Registration Error"), | |
118 message, NULL); | |
119 g_free(message); | |
120 return; | |
121 } | |
122 | |
8130
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
123 if (prpl_info->register_user == NULL) |
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
124 return; |
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
125 |
6581 | 126 account = gaim_connection_get_account(gc); |
127 | |
128 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) | |
129 return; | |
130 | |
131 gaim_connection_set_state(gc, GAIM_CONNECTING); | |
132 | |
133 connections = g_list_append(connections, gc); | |
134 | |
135 gaim_signal_emit(gaim_connections_get_handle(), "signing-on", gc); | |
136 | |
137 /* set this so we don't auto-reconnect after registering */ | |
138 gc->wants_to_die = TRUE; | |
139 | |
140 gaim_debug(GAIM_DEBUG_INFO, "connection", "Calling register_user\n"); | |
141 | |
142 prpl_info->register_user(account); | |
143 } | |
144 | |
6109 | 145 |
5563 | 146 void |
147 gaim_connection_connect(GaimConnection *gc) | |
148 { | |
149 GaimAccount *account; | |
150 GaimConnectionUiOps *ops; | |
151 GaimPluginProtocolInfo *prpl_info = NULL; | |
152 | |
153 g_return_if_fail(gc != NULL); | |
154 | |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
155 gaim_debug(GAIM_DEBUG_INFO, "connection", |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
156 "Connecting. gc = %p\n", gc); |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
157 |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
158 ops = gaim_connections_get_ui_ops(); |
5563 | 159 |
6136
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
160 if (gc->prpl != NULL) |
8131
968425e5da2f
[gaim-migrate @ 8836]
Christian Hammond <chipx86@chipx86.com>
parents:
8130
diff
changeset
|
161 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
6136
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
162 else { |
8130
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
163 gchar *message = g_strdup_printf(_("Missing protocol plugin for %s"), |
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
164 gaim_account_get_username(gaim_connection_get_account(gc))); |
6136
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
165 |
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
166 gaim_debug(GAIM_DEBUG_ERROR, "connection", |
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
167 "Could not get prpl info for %p\n", gc); |
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
168 gaim_notify_error(NULL, _("Connection Error"), |
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
169 message, NULL); |
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
170 g_free(message); |
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
171 return; |
e391813214a6
[gaim-migrate @ 6610]
Christian Hammond <chipx86@chipx86.com>
parents:
6113
diff
changeset
|
172 } |
5563 | 173 |
174 account = gaim_connection_get_account(gc); | |
175 | |
6109 | 176 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) |
177 return; | |
178 | |
6036 | 179 if (!(prpl_info->options & OPT_PROTO_NO_PASSWORD) && |
6231 | 180 !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL) && |
181 gaim_account_get_password(account) == NULL) { | |
6111 | 182 gchar *primary; |
6231 | 183 gchar *escaped; |
184 const gchar *username = gaim_account_get_username(account); | |
185 | |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
186 gaim_debug(GAIM_DEBUG_INFO, "connection", "Requesting password\n"); |
6468
4aa3b1cec52b
[gaim-migrate @ 6977]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
187 gaim_connection_destroy(gc); |
6231 | 188 escaped = g_markup_escape_text(username, strlen(username)); |
9699 | 189 primary = g_strdup_printf(_("Enter password for %s (%s)"), escaped, |
190 gaim_account_get_protocol_name(account)); | |
8697 | 191 gaim_request_input(gc, NULL, primary, NULL, NULL, FALSE, TRUE, NULL, |
6109 | 192 _("OK"), G_CALLBACK(request_pass_ok_cb), |
6110 | 193 _("Cancel"), NULL, account); |
6111 | 194 g_free(primary); |
6231 | 195 g_free(escaped); |
5563 | 196 |
197 return; | |
198 } | |
199 | |
200 gaim_connection_set_state(gc, GAIM_CONNECTING); | |
201 | |
6507 | 202 connections = g_list_append(connections, gc); |
203 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
204 gaim_signal_emit(gaim_connections_get_handle(), "signing-on", gc); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
205 |
5581
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
206 gaim_debug(GAIM_DEBUG_INFO, "connection", "Calling serv_login\n"); |
3a9b54f260e3
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
207 |
5563 | 208 serv_login(account); |
209 } | |
210 | |
211 void | |
212 gaim_connection_disconnect(GaimConnection *gc) | |
213 { | |
5926
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
214 GaimAccount *account; |
5563 | 215 GList *wins; |
10052 | 216 GaimPresence *presence = NULL; |
5563 | 217 |
218 g_return_if_fail(gc != NULL); | |
219 | |
5926
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
220 account = gaim_connection_get_account(gc); |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
221 |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
222 if (gaim_account_get_connection(account) != NULL) { |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
223 gaim_account_disconnect(account); |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
224 return; |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
225 } |
6c22d37c6a3c
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
226 |
5930
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
227 gaim_debug(GAIM_DEBUG_INFO, "connection", |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
228 "Disconnecting connection %p\n", gc); |
03f1d6cd784c
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
229 |
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
230 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
231 if (gaim_connection_get_state(gc) != GAIM_CONNECTING) |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
232 gaim_blist_remove_account(gaim_connection_get_account(gc)); |
5563 | 233 |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
234 gaim_signal_emit(gaim_connections_get_handle(), "signing-off", gc); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
235 |
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
236 serv_close(gc); |
5563 | 237 |
6533 | 238 connections = g_list_remove(connections, gc); |
239 | |
5859
022786c7ab53
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5788
diff
changeset
|
240 gaim_connection_set_state(gc, GAIM_DISCONNECTED); |
5563 | 241 |
7431 | 242 /* LOG system_log(log_signoff, gc, NULL, |
243 OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); */ | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
244 gaim_signal_emit(gaim_connections_get_handle(), "signed-off", gc); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
245 |
10052 | 246 presence = gaim_account_get_presence(account); |
247 if (gaim_presence_is_online(presence) == TRUE) | |
248 gaim_presence_set_status_active(presence, "offline", TRUE); | |
5615
6500a6c8d679
[gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents:
5581
diff
changeset
|
249 |
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
250 /* |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
251 * XXX This is a hack! Remove this and replace it with a better event |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
252 * notification system. |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
253 */ |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
254 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
255 GaimConvWindow *win = (GaimConvWindow *)wins->data; |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
256 gaim_conversation_update(gaim_conv_window_get_conversation_at(win, 0), |
5740
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
257 GAIM_CONV_ACCOUNT_OFFLINE); |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
258 } |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
259 |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
260 gaim_request_close_with_handle(gc); |
6ec7b32ab1df
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
261 gaim_notify_close_with_handle(gc); |
5563 | 262 } |
263 | |
9848 | 264 if (!gaim_account_get_remember_password(account)) |
265 gaim_account_set_password(account,NULL); | |
266 | |
5622
70ae81fc802f
[gaim-migrate @ 6029]
Christian Hammond <chipx86@chipx86.com>
parents:
5615
diff
changeset
|
267 gaim_connection_destroy(gc); |
5563 | 268 } |
269 | |
6029 | 270 gboolean |
271 gaim_connection_disconnect_cb(gpointer data) | |
272 { | |
6076 | 273 GaimAccount *account = data; |
9854 | 274 GaimConnection *gc = gaim_account_get_connection(account); |
9848 | 275 |
276 if (!gaim_account_get_remember_password(account)) | |
277 gaim_account_set_password(account,NULL); | |
278 | |
9854 | 279 if (gc) |
6076 | 280 gaim_connection_disconnect(gc); |
6029 | 281 |
282 return FALSE; | |
283 } | |
284 | |
5563 | 285 /* |
8130
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
286 * d:)->-< |
5563 | 287 * |
288 * d:O-\-< | |
8130
ff88d4cbf4db
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
289 * |
5563 | 290 * d:D-/-< |
291 * | |
292 * d8D->-< DANCE! | |
293 */ | |
294 | |
295 void | |
296 gaim_connection_set_state(GaimConnection *gc, GaimConnectionState state) | |
297 { | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
298 GaimConnectionUiOps *ops; |
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
299 |
5563 | 300 g_return_if_fail(gc != NULL); |
301 | |
5784
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
302 if (gc->state == state) |
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
303 return; |
72fb22b9ac98
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
304 |
5563 | 305 gc->state = state; |
306 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
307 ops = gaim_connections_get_ui_ops(); |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
308 |
5905
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
309 if (gc->state == GAIM_CONNECTING) { |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
310 connections_connecting = g_list_append(connections_connecting, gc); |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
311 } |
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
312 else { |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
313 connections_connecting = g_list_remove(connections_connecting, gc); |
5905
dbe2a2174be9
[gaim-migrate @ 6337]
Christian Hammond <chipx86@chipx86.com>
parents:
5885
diff
changeset
|
314 } |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
315 |
5563 | 316 if (gc->state == GAIM_CONNECTED) { |
6695 | 317 GaimBlistNode *gnode,*cnode,*bnode; |
5563 | 318 GList *wins; |
9285 | 319 GList *add_buds = NULL; |
10052 | 320 GaimAccount *account; |
321 GaimPresence *presence; | |
322 | |
323 account = gaim_connection_get_account(gc); | |
324 presence = gaim_account_get_presence(account); | |
5563 | 325 |
326 /* Set the time the account came online */ | |
327 time(&gc->login_time); | |
328 | |
329 if (ops != NULL && ops->connected != NULL) | |
330 ops->connected(gc); | |
331 | |
332 gaim_blist_show(); | |
8573 | 333 gaim_blist_add_account(account); |
5563 | 334 |
335 /* | |
336 * XXX This is a hack! Remove this and replace it with a better event | |
337 * notification system. | |
338 */ | |
339 for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { | |
7118
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
340 GaimConvWindow *win = (GaimConvWindow *)wins->data; |
bf630f7dfdcd
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
341 gaim_conversation_update(gaim_conv_window_get_conversation_at(win, 0), |
5563 | 342 GAIM_CONV_ACCOUNT_ONLINE); |
343 } | |
344 | |
7431 | 345 /* LOG system_log(log_signon, gc, NULL, |
346 OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); */ | |
8573 | 347 if(gaim_prefs_get_bool("/core/logging/log_system") && |
348 gaim_prefs_get_bool("/core/logging/log_own_states")){ | |
349 GaimLog *log = gaim_account_get_log(account); | |
350 char *msg = g_strdup_printf("+++ %s signed on", | |
351 gaim_account_get_username(account)); | |
352 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, | |
353 gaim_account_get_username(account), gc->login_time, | |
354 msg); | |
10193 | 355 g_free(msg); |
8573 | 356 } |
357 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
358 gaim_signal_emit(gaim_connections_get_handle(), "signed-on", gc); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
359 |
10052 | 360 /* XXX - STATUS - Need to handle away at login here. */ |
361 if (gaim_presence_is_online(presence) == FALSE) | |
362 gaim_presence_set_status_active(presence, "online", TRUE); | |
5563 | 363 |
364 /* let the prpl know what buddies we pulled out of the local list */ | |
365 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { | |
366 if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
367 continue; | |
6695 | 368 for(cnode = gnode->child; cnode; cnode = cnode->next) { |
369 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
370 continue; | |
371 for(bnode = cnode->child; bnode; bnode = bnode->next) { | |
372 GaimBuddy *b; | |
373 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
374 continue; | |
375 | |
376 b = (GaimBuddy *)bnode; | |
5563 | 377 if(b->account == gc->account) { |
9285 | 378 add_buds = g_list_append(add_buds, b); |
5563 | 379 } |
380 } | |
381 } | |
382 } | |
383 | |
384 if(add_buds) { | |
385 serv_add_buddies(gc, add_buds); | |
386 g_list_free(add_buds); | |
387 } | |
388 | |
389 serv_set_permit_deny(gc); | |
390 } | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
391 else if (gc->state == GAIM_DISCONNECTED) { |
8573 | 392 GaimAccount *account = gaim_connection_get_account(gc); |
393 | |
394 if(gaim_prefs_get_bool("/core/logging/log_system") && | |
395 gaim_prefs_get_bool("/core/logging/log_own_states")){ | |
396 GaimLog *log = gaim_account_get_log(account); | |
397 char *msg = g_strdup_printf("+++ %s signed off", | |
398 gaim_account_get_username(account)); | |
399 gaim_log_write(log, GAIM_MESSAGE_SYSTEM, | |
400 gaim_account_get_username(account), time(NULL), | |
401 msg); | |
9190
9e3289499977
[gaim-migrate @ 9985]
Christian Hammond <chipx86@chipx86.com>
parents:
9019
diff
changeset
|
402 g_free(msg); |
8573 | 403 } |
404 | |
405 gaim_account_destroy_log(account); | |
406 | |
5885
02569519d0cc
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
407 if (ops != NULL && ops->disconnected != NULL) |
9190
9e3289499977
[gaim-migrate @ 9985]
Christian Hammond <chipx86@chipx86.com>
parents:
9019
diff
changeset
|
408 ops->disconnected(gc); |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
409 } |
5563 | 410 } |
411 | |
412 void | |
413 gaim_connection_set_account(GaimConnection *gc, GaimAccount *account) | |
414 { | |
415 g_return_if_fail(gc != NULL); | |
416 g_return_if_fail(account != NULL); | |
417 | |
418 gc->account = account; | |
419 } | |
420 | |
421 void | |
422 gaim_connection_set_display_name(GaimConnection *gc, const char *name) | |
423 { | |
424 g_return_if_fail(gc != NULL); | |
425 | |
426 if (gc->display_name != NULL) | |
427 g_free(gc->display_name); | |
428 | |
429 gc->display_name = (name == NULL ? NULL : g_strdup(name)); | |
430 } | |
431 | |
432 GaimConnectionState | |
433 gaim_connection_get_state(const GaimConnection *gc) | |
434 { | |
435 g_return_val_if_fail(gc != NULL, GAIM_DISCONNECTED); | |
436 | |
437 return gc->state; | |
438 } | |
439 | |
440 GaimAccount * | |
441 gaim_connection_get_account(const GaimConnection *gc) | |
442 { | |
443 g_return_val_if_fail(gc != NULL, NULL); | |
444 | |
445 return gc->account; | |
446 } | |
447 | |
448 const char * | |
449 gaim_connection_get_display_name(const GaimConnection *gc) | |
450 { | |
451 g_return_val_if_fail(gc != NULL, NULL); | |
452 | |
453 return gc->display_name; | |
454 } | |
455 | |
456 void | |
457 gaim_connection_update_progress(GaimConnection *gc, const char *text, | |
458 size_t step, size_t count) | |
459 { | |
460 GaimConnectionUiOps *ops; | |
461 | |
462 g_return_if_fail(gc != NULL); | |
463 g_return_if_fail(text != NULL); | |
464 g_return_if_fail(step < count); | |
465 g_return_if_fail(count > 1); | |
466 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
467 ops = gaim_connections_get_ui_ops(); |
5563 | 468 |
469 if (ops != NULL && ops->connect_progress != NULL) | |
470 ops->connect_progress(gc, text, step, count); | |
471 } | |
472 | |
473 void | |
5571
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
474 gaim_connection_notice(GaimConnection *gc, const char *text) |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
475 { |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
476 GaimConnectionUiOps *ops; |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
477 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
478 g_return_if_fail(gc != NULL); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
479 g_return_if_fail(text != NULL); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
480 |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
481 ops = gaim_connections_get_ui_ops(); |
5571
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
482 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
483 if (ops != NULL && ops->notice != NULL) |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
484 ops->notice(gc, text); |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
485 } |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
486 |
113090160626
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
487 void |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
488 gaim_connection_error(GaimConnection *gc, const char *text) |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
489 { |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
490 GaimConnectionUiOps *ops; |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
491 |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
492 g_return_if_fail(gc != NULL); |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
493 g_return_if_fail(text != NULL); |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
494 |
6393 | 495 /* If we've already got one error, we don't need any more */ |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
496 if (gc->disconnect_timeout) |
6393 | 497 return; |
498 | |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
499 ops = gaim_connections_get_ui_ops(); |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
500 |
6460
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
501 if (ops != NULL) { |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
502 if (ops->report_disconnect != NULL) |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
503 ops->report_disconnect(gc, text); |
ff4551719cc7
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
504 } |
5727 | 505 |
8273
f24172f53650
[gaim-migrate @ 8997]
Christian Hammond <chipx86@chipx86.com>
parents:
8131
diff
changeset
|
506 gc->disconnect_timeout = gaim_timeout_add(0, gaim_connection_disconnect_cb, |
6076 | 507 gaim_connection_get_account(gc)); |
5564
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
508 } |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
509 |
187c740f2a4e
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
510 void |
5563 | 511 gaim_connections_disconnect_all(void) |
512 { | |
513 GList *l; | |
6113 | 514 GaimConnection *gc; |
5563 | 515 |
6113 | 516 while ((l = gaim_connections_get_all()) != NULL) { |
517 gc = l->data; | |
518 gc->wants_to_die = TRUE; | |
519 gaim_connection_destroy(gc); | |
520 } | |
5563 | 521 } |
522 | |
523 GList * | |
524 gaim_connections_get_all(void) | |
525 { | |
526 return connections; | |
527 } | |
528 | |
5788
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
529 GList * |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
530 gaim_connections_get_connecting(void) |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
531 { |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
532 return connections_connecting; |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
533 } |
8c237274189f
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
534 |
5563 | 535 void |
7035
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
536 gaim_connections_set_ui_ops(GaimConnectionUiOps *ops) |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
537 { |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
538 connection_ui_ops = ops; |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
539 } |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
540 |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
541 GaimConnectionUiOps * |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
542 gaim_connections_get_ui_ops(void) |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
543 { |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
544 return connection_ui_ops; |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
545 } |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
546 |
feb3d21a7794
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
547 void |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
548 gaim_connections_init(void) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
549 { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
550 void *handle = gaim_connections_get_handle(); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
551 |
6564
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
552 gaim_signal_register(handle, "signing-on", |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
553 gaim_marshal_VOID__POINTER, NULL, 1, |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
554 gaim_value_new(GAIM_TYPE_SUBTYPE, |
6597
fe569b675cd2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
555 GAIM_SUBTYPE_CONNECTION)); |
6564
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
556 |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
557 gaim_signal_register(handle, "signed-on", |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
558 gaim_marshal_VOID__POINTER, NULL, 1, |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
559 gaim_value_new(GAIM_TYPE_SUBTYPE, |
6597
fe569b675cd2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
560 GAIM_SUBTYPE_CONNECTION)); |
6564
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
561 |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
562 gaim_signal_register(handle, "signing-off", |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
563 gaim_marshal_VOID__POINTER, NULL, 1, |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
564 gaim_value_new(GAIM_TYPE_SUBTYPE, |
6597
fe569b675cd2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
565 GAIM_SUBTYPE_CONNECTION)); |
6564
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
566 |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
567 gaim_signal_register(handle, "signed-off", |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
568 gaim_marshal_VOID__POINTER, NULL, 1, |
800ef4a51096
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
569 gaim_value_new(GAIM_TYPE_SUBTYPE, |
6597
fe569b675cd2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
570 GAIM_SUBTYPE_CONNECTION)); |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
571 } |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
572 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
573 void |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
574 gaim_connections_uninit(void) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
575 { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
576 gaim_signals_unregister_by_instance(gaim_connections_get_handle()); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
577 } |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
578 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
579 void * |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
580 gaim_connections_get_handle(void) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
581 { |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
582 return &connections_handle; |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
583 } |