Tue, 24 Aug 2004 11:43:39 +0000
[gaim-migrate @ 10726]
" After an account was disconnected or signed off, Gaim
was not forgetting that it knew the password of the
user while in the same application session. This patch
causes gaim to blank the password for accounts that do
not have "Remember password" set when an account is
disconnected by request or forced." --Dave West
our rationale for remembering them during that instance of gaim was that
you probly do not want to have to type it in again if you are disconnected.
after seeing numerous bug reports about people mis-typing their password
and people afraid that someone else will sit down at their computer, i
decided that this rationale isn't as compelling.
committer: Luke Schierer <lschiere@pidgin.im>
| 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
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
25 | #include "internal.h" |
|
754c63f29b77
[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
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
29 | #include "log.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
30 | #include "notify.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
31 | #include "prefs.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
32 | #include "request.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
33 | #include "server.h" |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
34 | #include "signals.h" |
|
6106
1dc08be40f0a
[gaim-migrate @ 6567]
Mark Doliner <markdoliner@pidgin.im>
parents:
6076
diff
changeset
|
35 | #include "util.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5859
diff
changeset
|
36 | |
| 5563 | 37 | static GList *connections = NULL; |
|
5564
1779a1bfbdb8
[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
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
41 | static int connections_handle; |
|
5872
754c63f29b77
[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
0a52405f402f
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
63 | GaimAccount *account; |
|
0a52405f402f
[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
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
73 | gaim_debug(GAIM_DEBUG_INFO, "connection", |
|
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
74 | "Destroying connection %p\n", gc); |
|
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
75 | |
|
5741
0a52405f402f
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
76 | account = gaim_connection_get_account(gc); |
|
0a52405f402f
[gaim-migrate @ 6165]
Christian Hammond <chipx86@chipx86.com>
parents:
5740
diff
changeset
|
77 | gaim_account_set_connection(account, NULL); |
|
0a52405f402f
[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 | ||
| 82 | if (gc->away != NULL) | |
| 83 | g_free(gc->away); | |
| 84 | ||
| 85 | if (gc->away_state != NULL) | |
| 86 | g_free(gc->away_state); | |
| 87 | ||
| 6393 | 88 | if (gc->disconnect_timeout) |
| 8287 | 89 | gaim_timeout_remove(gc->disconnect_timeout); |
| 6393 | 90 | |
| 5563 | 91 | g_free(gc); |
| 92 | } | |
| 93 | ||
|
6110
8c703c3453c7
[gaim-migrate @ 6572]
Mark Doliner <markdoliner@pidgin.im>
parents:
6109
diff
changeset
|
94 | static void request_pass_ok_cb(GaimAccount *account, const char *entry) |
|
6109
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
95 | { |
|
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
96 | gaim_account_set_password(account, (*entry != '\0') ? entry : NULL); |
|
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
97 | |
|
6110
8c703c3453c7
[gaim-migrate @ 6572]
Mark Doliner <markdoliner@pidgin.im>
parents:
6109
diff
changeset
|
98 | gaim_account_connect(account); |
|
6109
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
99 | } |
|
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
100 | |
| 6581 | 101 | void |
| 102 | gaim_connection_register(GaimConnection *gc) | |
| 103 | { | |
| 104 | GaimAccount *account; | |
| 105 | GaimConnectionUiOps *ops; | |
| 106 | GaimPluginProtocolInfo *prpl_info = NULL; | |
| 107 | ||
| 108 | g_return_if_fail(gc != NULL); | |
| 109 | ||
|
8130
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
110 | gaim_debug(GAIM_DEBUG_INFO, "connection", "Registering. gc = %p\n", gc); |
| 6581 | 111 | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
112 | ops = gaim_connections_get_ui_ops(); |
| 6581 | 113 | |
| 114 | if (gc->prpl != NULL) | |
|
8130
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
115 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
|
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
116 | else |
|
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
117 | { |
|
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
118 | gchar *message = g_strdup_printf(_("Missing protocol plugin for %s"), |
|
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
119 | gaim_account_get_username(gaim_connection_get_account(gc))); |
| 6581 | 120 | |
| 121 | gaim_debug(GAIM_DEBUG_ERROR, "connection", | |
| 122 | "Could not get prpl info for %p\n", gc); | |
| 123 | gaim_notify_error(NULL, _("Registration Error"), | |
| 124 | message, NULL); | |
| 125 | g_free(message); | |
| 126 | return; | |
| 127 | } | |
| 128 | ||
|
8130
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
129 | if (prpl_info->register_user == NULL) |
|
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
130 | return; |
|
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
131 | |
| 6581 | 132 | account = gaim_connection_get_account(gc); |
| 133 | ||
| 134 | if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) | |
| 135 | return; | |
| 136 | ||
| 137 | gaim_connection_set_state(gc, GAIM_CONNECTING); | |
| 138 | ||
| 139 | connections = g_list_append(connections, gc); | |
| 140 | ||
| 141 | gaim_signal_emit(gaim_connections_get_handle(), "signing-on", gc); | |
| 142 | ||
| 143 | /* set this so we don't auto-reconnect after registering */ | |
| 144 | gc->wants_to_die = TRUE; | |
| 145 | ||
| 146 | gaim_debug(GAIM_DEBUG_INFO, "connection", "Calling register_user\n"); | |
| 147 | ||
| 148 | prpl_info->register_user(account); | |
| 149 | } | |
| 150 | ||
|
6109
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
151 | |
| 5563 | 152 | void |
| 153 | gaim_connection_connect(GaimConnection *gc) | |
| 154 | { | |
| 155 | GaimAccount *account; | |
| 156 | GaimConnectionUiOps *ops; | |
| 157 | GaimPluginProtocolInfo *prpl_info = NULL; | |
| 158 | ||
| 159 | g_return_if_fail(gc != NULL); | |
| 160 | ||
|
5930
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
161 | gaim_debug(GAIM_DEBUG_INFO, "connection", |
|
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
162 | "Connecting. gc = %p\n", gc); |
|
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
163 | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
164 | ops = gaim_connections_get_ui_ops(); |
| 5563 | 165 | |
| 6136 | 166 | if (gc->prpl != NULL) |
|
8131
0e465d3ad39e
[gaim-migrate @ 8836]
Christian Hammond <chipx86@chipx86.com>
parents:
8130
diff
changeset
|
167 | prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); |
| 6136 | 168 | else { |
|
8130
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
169 | gchar *message = g_strdup_printf(_("Missing protocol plugin for %s"), |
|
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
170 | gaim_account_get_username(gaim_connection_get_account(gc))); |
| 6136 | 171 | |
| 172 | gaim_debug(GAIM_DEBUG_ERROR, "connection", | |
| 173 | "Could not get prpl info for %p\n", gc); | |
| 174 | gaim_notify_error(NULL, _("Connection Error"), | |
| 175 | message, NULL); | |
| 176 | g_free(message); | |
| 177 | return; | |
| 178 | } | |
| 5563 | 179 | |
| 180 | account = gaim_connection_get_account(gc); | |
| 181 | ||
|
6109
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
182 | if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) |
|
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
183 | return; |
|
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
184 | |
|
6036
285e48913c72
[gaim-migrate @ 6486]
Mark Doliner <markdoliner@pidgin.im>
parents:
6029
diff
changeset
|
185 | if (!(prpl_info->options & OPT_PROTO_NO_PASSWORD) && |
|
6231
48e5eff01f7a
[gaim-migrate @ 6724]
Mark Doliner <markdoliner@pidgin.im>
parents:
6136
diff
changeset
|
186 | !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL) && |
|
48e5eff01f7a
[gaim-migrate @ 6724]
Mark Doliner <markdoliner@pidgin.im>
parents:
6136
diff
changeset
|
187 | gaim_account_get_password(account) == NULL) { |
|
6111
95ddad505e67
[gaim-migrate @ 6573]
Mark Doliner <markdoliner@pidgin.im>
parents:
6110
diff
changeset
|
188 | gchar *primary; |
|
6231
48e5eff01f7a
[gaim-migrate @ 6724]
Mark Doliner <markdoliner@pidgin.im>
parents:
6136
diff
changeset
|
189 | gchar *escaped; |
|
48e5eff01f7a
[gaim-migrate @ 6724]
Mark Doliner <markdoliner@pidgin.im>
parents:
6136
diff
changeset
|
190 | const gchar *username = gaim_account_get_username(account); |
|
48e5eff01f7a
[gaim-migrate @ 6724]
Mark Doliner <markdoliner@pidgin.im>
parents:
6136
diff
changeset
|
191 | |
|
5930
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
192 | gaim_debug(GAIM_DEBUG_INFO, "connection", "Requesting password\n"); |
|
6468
7500be54656d
[gaim-migrate @ 6977]
Christian Hammond <chipx86@chipx86.com>
parents:
6460
diff
changeset
|
193 | gaim_connection_destroy(gc); |
|
6231
48e5eff01f7a
[gaim-migrate @ 6724]
Mark Doliner <markdoliner@pidgin.im>
parents:
6136
diff
changeset
|
194 | escaped = g_markup_escape_text(username, strlen(username)); |
|
9699
d1ca5dd91cc2
[gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents:
9285
diff
changeset
|
195 | primary = g_strdup_printf(_("Enter password for %s (%s)"), escaped, |
|
d1ca5dd91cc2
[gaim-migrate @ 10558]
Mark Doliner <markdoliner@pidgin.im>
parents:
9285
diff
changeset
|
196 | gaim_account_get_protocol_name(account)); |
| 8697 | 197 | gaim_request_input(gc, NULL, primary, NULL, NULL, FALSE, TRUE, NULL, |
|
6109
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6106
diff
changeset
|
198 | _("OK"), G_CALLBACK(request_pass_ok_cb), |
|
6110
8c703c3453c7
[gaim-migrate @ 6572]
Mark Doliner <markdoliner@pidgin.im>
parents:
6109
diff
changeset
|
199 | _("Cancel"), NULL, account); |
|
6111
95ddad505e67
[gaim-migrate @ 6573]
Mark Doliner <markdoliner@pidgin.im>
parents:
6110
diff
changeset
|
200 | g_free(primary); |
|
6231
48e5eff01f7a
[gaim-migrate @ 6724]
Mark Doliner <markdoliner@pidgin.im>
parents:
6136
diff
changeset
|
201 | g_free(escaped); |
| 5563 | 202 | |
| 203 | return; | |
| 204 | } | |
| 205 | ||
| 206 | gaim_connection_set_state(gc, GAIM_CONNECTING); | |
| 207 | ||
| 6507 | 208 | connections = g_list_append(connections, gc); |
| 209 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
210 | gaim_signal_emit(gaim_connections_get_handle(), "signing-on", gc); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
211 | |
|
5581
646cda748437
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
212 | gaim_debug(GAIM_DEBUG_INFO, "connection", "Calling serv_login\n"); |
|
646cda748437
[gaim-migrate @ 5985]
Christian Hammond <chipx86@chipx86.com>
parents:
5571
diff
changeset
|
213 | |
| 5563 | 214 | serv_login(account); |
| 215 | } | |
| 216 | ||
| 217 | void | |
| 218 | gaim_connection_disconnect(GaimConnection *gc) | |
| 219 | { | |
|
5926
f0c5bbf16793
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
220 | GaimAccount *account; |
| 5563 | 221 | GList *wins; |
| 222 | ||
| 223 | g_return_if_fail(gc != NULL); | |
| 224 | ||
|
5926
f0c5bbf16793
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
225 | account = gaim_connection_get_account(gc); |
|
f0c5bbf16793
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
226 | |
|
f0c5bbf16793
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
227 | if (gaim_account_get_connection(account) != NULL) { |
|
f0c5bbf16793
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
228 | gaim_account_disconnect(account); |
|
f0c5bbf16793
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
229 | return; |
|
f0c5bbf16793
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
230 | } |
|
f0c5bbf16793
[gaim-migrate @ 6366]
Christian Hammond <chipx86@chipx86.com>
parents:
5905
diff
changeset
|
231 | |
|
5930
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
232 | gaim_debug(GAIM_DEBUG_INFO, "connection", |
|
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
233 | "Disconnecting connection %p\n", gc); |
|
cdd2e5397cd3
[gaim-migrate @ 6370]
Christian Hammond <chipx86@chipx86.com>
parents:
5926
diff
changeset
|
234 | |
|
5740
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
235 | if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
236 | if (gaim_connection_get_state(gc) != GAIM_CONNECTING) |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
237 | gaim_blist_remove_account(gaim_connection_get_account(gc)); |
| 5563 | 238 | |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
239 | gaim_signal_emit(gaim_connections_get_handle(), "signing-off", gc); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
240 | |
|
5740
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
241 | serv_close(gc); |
| 5563 | 242 | |
| 6533 | 243 | connections = g_list_remove(connections, gc); |
| 244 | ||
|
5859
e9e5fb0bbfe9
[gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
5788
diff
changeset
|
245 | gaim_connection_set_state(gc, GAIM_DISCONNECTED); |
| 5563 | 246 | |
| 7431 | 247 | /* LOG system_log(log_signoff, gc, NULL, |
| 248 | OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); */ | |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
249 | gaim_signal_emit(gaim_connections_get_handle(), "signed-off", gc); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
250 | |
|
5615
2eb715cbbd9b
[gaim-migrate @ 6022]
Christian Hammond <chipx86@chipx86.com>
parents:
5581
diff
changeset
|
251 | |
|
5740
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
252 | /* |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
253 | * XXX This is a hack! Remove this and replace it with a better event |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
254 | * notification system. |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
255 | */ |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
256 | for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
257 | GaimConvWindow *win = (GaimConvWindow *)wins->data; |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
258 | gaim_conversation_update(gaim_conv_window_get_conversation_at(win, 0), |
|
5740
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
259 | GAIM_CONV_ACCOUNT_OFFLINE); |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
260 | } |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
261 | |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
262 | gaim_request_close_with_handle(gc); |
|
ec9cff0dedea
[gaim-migrate @ 6164]
Christian Hammond <chipx86@chipx86.com>
parents:
5727
diff
changeset
|
263 | gaim_notify_close_with_handle(gc); |
| 5563 | 264 | } |
| 265 | ||
|
9848
708a47f26faa
[gaim-migrate @ 10726]
Dave West <kat@users.sourceforge.net>
parents:
9699
diff
changeset
|
266 | if (!gaim_account_get_remember_password(account)) |
|
708a47f26faa
[gaim-migrate @ 10726]
Dave West <kat@users.sourceforge.net>
parents:
9699
diff
changeset
|
267 | gaim_account_set_password(account,NULL); |
|
708a47f26faa
[gaim-migrate @ 10726]
Dave West <kat@users.sourceforge.net>
parents:
9699
diff
changeset
|
268 | |
|
5622
3180ced42da4
[gaim-migrate @ 6029]
Christian Hammond <chipx86@chipx86.com>
parents:
5615
diff
changeset
|
269 | gaim_connection_destroy(gc); |
| 5563 | 270 | } |
| 271 | ||
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6018
diff
changeset
|
272 | gboolean |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6018
diff
changeset
|
273 | gaim_connection_disconnect_cb(gpointer data) |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6018
diff
changeset
|
274 | { |
| 6076 | 275 | GaimAccount *account = data; |
|
9848
708a47f26faa
[gaim-migrate @ 10726]
Dave West <kat@users.sourceforge.net>
parents:
9699
diff
changeset
|
276 | |
|
708a47f26faa
[gaim-migrate @ 10726]
Dave West <kat@users.sourceforge.net>
parents:
9699
diff
changeset
|
277 | if (!gaim_account_get_remember_password(account)) |
|
708a47f26faa
[gaim-migrate @ 10726]
Dave West <kat@users.sourceforge.net>
parents:
9699
diff
changeset
|
278 | gaim_account_set_password(account,NULL); |
|
708a47f26faa
[gaim-migrate @ 10726]
Dave West <kat@users.sourceforge.net>
parents:
9699
diff
changeset
|
279 | |
| 6076 | 280 | GaimConnection *gc = gaim_account_get_connection(account); |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6018
diff
changeset
|
281 | |
| 6076 | 282 | if(gc) |
| 283 | gaim_connection_disconnect(gc); | |
|
6029
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6018
diff
changeset
|
284 | |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6018
diff
changeset
|
285 | return FALSE; |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6018
diff
changeset
|
286 | } |
|
85d6afa168fb
[gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents:
6018
diff
changeset
|
287 | |
| 5563 | 288 | /* |
|
8130
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
289 | * d:)->-< |
| 5563 | 290 | * |
| 291 | * d:O-\-< | |
|
8130
58e4e51f514b
[gaim-migrate @ 8835]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
292 | * |
| 5563 | 293 | * d:D-/-< |
| 294 | * | |
| 295 | * d8D->-< DANCE! | |
| 296 | */ | |
| 297 | ||
| 298 | void | |
| 299 | gaim_connection_set_state(GaimConnection *gc, GaimConnectionState state) | |
| 300 | { | |
|
5885
223ac977eed2
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
301 | GaimConnectionUiOps *ops; |
|
223ac977eed2
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
302 | |
| 5563 | 303 | g_return_if_fail(gc != NULL); |
| 304 | ||
|
5784
4c9046760b5b
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
305 | if (gc->state == state) |
|
4c9046760b5b
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
306 | return; |
|
4c9046760b5b
[gaim-migrate @ 6209]
Christian Hammond <chipx86@chipx86.com>
parents:
5741
diff
changeset
|
307 | |
| 5563 | 308 | gc->state = state; |
| 309 | ||
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
310 | ops = gaim_connections_get_ui_ops(); |
|
5885
223ac977eed2
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
311 | |
|
5905
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5885
diff
changeset
|
312 | if (gc->state == GAIM_CONNECTING) { |
|
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5885
diff
changeset
|
313 | connections_connecting = g_list_append(connections_connecting, gc); |
|
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5885
diff
changeset
|
314 | } |
|
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5885
diff
changeset
|
315 | else { |
|
5885
223ac977eed2
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
316 | connections_connecting = g_list_remove(connections_connecting, gc); |
|
5905
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5885
diff
changeset
|
317 | } |
|
5885
223ac977eed2
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
318 | |
| 5563 | 319 | if (gc->state == GAIM_CONNECTED) { |
| 6695 | 320 | GaimBlistNode *gnode,*cnode,*bnode; |
| 5563 | 321 | GList *wins; |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9190
diff
changeset
|
322 | GList *add_buds = NULL; |
| 8573 | 323 | GaimAccount *account = gaim_connection_get_account(gc); |
| 5563 | 324 | |
| 325 | /* Set the time the account came online */ | |
| 326 | time(&gc->login_time); | |
| 327 | ||
| 328 | if (ops != NULL && ops->connected != NULL) | |
| 329 | ops->connected(gc); | |
| 330 | ||
| 331 | gaim_blist_show(); | |
| 8573 | 332 | gaim_blist_add_account(account); |
| 5563 | 333 | |
| 334 | /* | |
| 335 | * XXX This is a hack! Remove this and replace it with a better event | |
| 336 | * notification system. | |
| 337 | */ | |
| 338 | for (wins = gaim_get_windows(); wins != NULL; wins = wins->next) { | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
339 | GaimConvWindow *win = (GaimConvWindow *)wins->data; |
|
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7035
diff
changeset
|
340 | gaim_conversation_update(gaim_conv_window_get_conversation_at(win, 0), |
| 5563 | 341 | GAIM_CONV_ACCOUNT_ONLINE); |
| 342 | } | |
| 343 | ||
| 7431 | 344 | /* LOG system_log(log_signon, gc, NULL, |
| 345 | OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); */ | |
| 8573 | 346 | if(gaim_prefs_get_bool("/core/logging/log_system") && |
| 347 | gaim_prefs_get_bool("/core/logging/log_own_states")){ | |
| 348 | GaimLog *log = gaim_account_get_log(account); | |
| 349 | char *msg = g_strdup_printf("+++ %s signed on", | |
| 350 | gaim_account_get_username(account)); | |
| 351 | gaim_log_write(log, GAIM_MESSAGE_SYSTEM, | |
| 352 | gaim_account_get_username(account), gc->login_time, | |
| 353 | msg); | |
| 354 | g_free(msg); | |
| 355 | } | |
| 356 | ||
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
357 | gaim_signal_emit(gaim_connections_get_handle(), "signed-on", gc); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
358 | |
| 5563 | 359 | #if 0 |
| 360 | /* away option given? */ | |
| 361 | if (opt_away) { | |
| 362 | away_on_login(opt_away_arg); | |
| 363 | /* don't do it again */ | |
| 364 | opt_away = 0; | |
| 365 | } else if (awaymessage) { | |
| 366 | serv_set_away(gc, GAIM_AWAY_CUSTOM, awaymessage->message); | |
| 367 | } | |
| 368 | if (opt_away_arg != NULL) { | |
| 369 | g_free(opt_away_arg); | |
| 370 | opt_away_arg = NULL; | |
| 371 | } | |
| 372 | #endif | |
| 373 | ||
| 374 | /* let the prpl know what buddies we pulled out of the local list */ | |
| 375 | for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { | |
| 376 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 377 | continue; | |
| 6695 | 378 | for(cnode = gnode->child; cnode; cnode = cnode->next) { |
| 379 | if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) | |
| 380 | continue; | |
| 381 | for(bnode = cnode->child; bnode; bnode = bnode->next) { | |
| 382 | GaimBuddy *b; | |
| 383 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 384 | continue; | |
| 385 | ||
| 386 | b = (GaimBuddy *)bnode; | |
| 5563 | 387 | if(b->account == gc->account) { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9190
diff
changeset
|
388 | add_buds = g_list_append(add_buds, b); |
| 5563 | 389 | } |
| 390 | } | |
| 391 | } | |
| 392 | } | |
| 393 | ||
| 394 | if(add_buds) { | |
| 395 | serv_add_buddies(gc, add_buds); | |
| 396 | g_list_free(add_buds); | |
| 397 | } | |
| 398 | ||
| 399 | serv_set_permit_deny(gc); | |
| 400 | } | |
|
5885
223ac977eed2
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
401 | else if (gc->state == GAIM_DISCONNECTED) { |
| 8573 | 402 | GaimAccount *account = gaim_connection_get_account(gc); |
| 403 | ||
| 404 | if(gaim_prefs_get_bool("/core/logging/log_system") && | |
| 405 | gaim_prefs_get_bool("/core/logging/log_own_states")){ | |
| 406 | GaimLog *log = gaim_account_get_log(account); | |
| 407 | char *msg = g_strdup_printf("+++ %s signed off", | |
| 408 | gaim_account_get_username(account)); | |
| 409 | gaim_log_write(log, GAIM_MESSAGE_SYSTEM, | |
| 410 | gaim_account_get_username(account), time(NULL), | |
| 411 | msg); | |
| 9190 | 412 | g_free(msg); |
| 8573 | 413 | } |
| 414 | ||
| 415 | gaim_account_destroy_log(account); | |
| 416 | ||
|
5885
223ac977eed2
[gaim-migrate @ 6317]
Christian Hammond <chipx86@chipx86.com>
parents:
5883
diff
changeset
|
417 | if (ops != NULL && ops->disconnected != NULL) |
| 9190 | 418 | ops->disconnected(gc); |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
419 | } |
| 5563 | 420 | } |
| 421 | ||
| 422 | void | |
| 423 | gaim_connection_set_account(GaimConnection *gc, GaimAccount *account) | |
| 424 | { | |
| 425 | g_return_if_fail(gc != NULL); | |
| 426 | g_return_if_fail(account != NULL); | |
| 427 | ||
| 428 | gc->account = account; | |
| 429 | } | |
| 430 | ||
| 431 | void | |
| 432 | gaim_connection_set_display_name(GaimConnection *gc, const char *name) | |
| 433 | { | |
| 434 | g_return_if_fail(gc != NULL); | |
| 435 | ||
| 436 | if (gc->display_name != NULL) | |
| 437 | g_free(gc->display_name); | |
| 438 | ||
| 439 | gc->display_name = (name == NULL ? NULL : g_strdup(name)); | |
| 440 | } | |
| 441 | ||
| 442 | GaimConnectionState | |
| 443 | gaim_connection_get_state(const GaimConnection *gc) | |
| 444 | { | |
| 445 | g_return_val_if_fail(gc != NULL, GAIM_DISCONNECTED); | |
| 446 | ||
| 447 | return gc->state; | |
| 448 | } | |
| 449 | ||
| 450 | GaimAccount * | |
| 451 | gaim_connection_get_account(const GaimConnection *gc) | |
| 452 | { | |
| 453 | g_return_val_if_fail(gc != NULL, NULL); | |
| 454 | ||
| 455 | return gc->account; | |
| 456 | } | |
| 457 | ||
| 458 | const char * | |
| 459 | gaim_connection_get_display_name(const GaimConnection *gc) | |
| 460 | { | |
| 461 | g_return_val_if_fail(gc != NULL, NULL); | |
| 462 | ||
| 463 | return gc->display_name; | |
| 464 | } | |
| 465 | ||
| 466 | void | |
| 467 | gaim_connection_update_progress(GaimConnection *gc, const char *text, | |
| 468 | size_t step, size_t count) | |
| 469 | { | |
| 470 | GaimConnectionUiOps *ops; | |
| 471 | ||
| 472 | g_return_if_fail(gc != NULL); | |
| 473 | g_return_if_fail(text != NULL); | |
| 474 | g_return_if_fail(step < count); | |
| 475 | g_return_if_fail(count > 1); | |
| 476 | ||
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
477 | ops = gaim_connections_get_ui_ops(); |
| 5563 | 478 | |
| 479 | if (ops != NULL && ops->connect_progress != NULL) | |
| 480 | ops->connect_progress(gc, text, step, count); | |
| 481 | } | |
| 482 | ||
| 483 | void | |
|
5571
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
484 | gaim_connection_notice(GaimConnection *gc, const char *text) |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
485 | { |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
486 | GaimConnectionUiOps *ops; |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
487 | |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
488 | g_return_if_fail(gc != NULL); |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
489 | g_return_if_fail(text != NULL); |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
490 | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
491 | ops = gaim_connections_get_ui_ops(); |
|
5571
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
492 | |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
493 | if (ops != NULL && ops->notice != NULL) |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
494 | ops->notice(gc, text); |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
495 | } |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
496 | |
|
b709464f507e
[gaim-migrate @ 5973]
Christian Hammond <chipx86@chipx86.com>
parents:
5564
diff
changeset
|
497 | void |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
498 | gaim_connection_error(GaimConnection *gc, const char *text) |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
499 | { |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
500 | GaimConnectionUiOps *ops; |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
501 | |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
502 | g_return_if_fail(gc != NULL); |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
503 | g_return_if_fail(text != NULL); |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
504 | |
| 6393 | 505 | /* If we've already got one error, we don't need any more */ |
|
6460
fc288e7221ca
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
506 | if (gc->disconnect_timeout) |
| 6393 | 507 | return; |
| 508 | ||
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
509 | ops = gaim_connections_get_ui_ops(); |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
510 | |
|
6460
fc288e7221ca
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
511 | if (ops != NULL) { |
|
fc288e7221ca
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
512 | if (ops->report_disconnect != NULL) |
|
fc288e7221ca
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
513 | ops->report_disconnect(gc, text); |
|
fc288e7221ca
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6393
diff
changeset
|
514 | } |
| 5727 | 515 | |
| 8273 | 516 | gc->disconnect_timeout = gaim_timeout_add(0, gaim_connection_disconnect_cb, |
| 6076 | 517 | gaim_connection_get_account(gc)); |
|
5564
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
518 | } |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
519 | |
|
1779a1bfbdb8
[gaim-migrate @ 5966]
Christian Hammond <chipx86@chipx86.com>
parents:
5563
diff
changeset
|
520 | void |
| 5563 | 521 | gaim_connections_disconnect_all(void) |
| 522 | { | |
| 523 | GList *l; | |
|
6113
5bc7394e69ea
[gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents:
6111
diff
changeset
|
524 | GaimConnection *gc; |
| 5563 | 525 | |
|
6113
5bc7394e69ea
[gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents:
6111
diff
changeset
|
526 | while ((l = gaim_connections_get_all()) != NULL) { |
|
5bc7394e69ea
[gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents:
6111
diff
changeset
|
527 | gc = l->data; |
|
5bc7394e69ea
[gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents:
6111
diff
changeset
|
528 | gc->wants_to_die = TRUE; |
|
5bc7394e69ea
[gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents:
6111
diff
changeset
|
529 | gaim_connection_destroy(gc); |
|
5bc7394e69ea
[gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents:
6111
diff
changeset
|
530 | } |
| 5563 | 531 | } |
| 532 | ||
| 533 | GList * | |
| 534 | gaim_connections_get_all(void) | |
| 535 | { | |
| 536 | return connections; | |
| 537 | } | |
| 538 | ||
|
5788
dd6e33a59151
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
539 | GList * |
|
dd6e33a59151
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
540 | gaim_connections_get_connecting(void) |
|
dd6e33a59151
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
541 | { |
|
dd6e33a59151
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
542 | return connections_connecting; |
|
dd6e33a59151
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
543 | } |
|
dd6e33a59151
[gaim-migrate @ 6213]
Christian Hammond <chipx86@chipx86.com>
parents:
5784
diff
changeset
|
544 | |
| 5563 | 545 | void |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
546 | gaim_connections_set_ui_ops(GaimConnectionUiOps *ops) |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
547 | { |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
548 | connection_ui_ops = ops; |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
549 | } |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
550 | |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
551 | GaimConnectionUiOps * |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
552 | gaim_connections_get_ui_ops(void) |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
553 | { |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
554 | return connection_ui_ops; |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
555 | } |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
556 | |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6695
diff
changeset
|
557 | void |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
558 | gaim_connections_init(void) |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
559 | { |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
560 | void *handle = gaim_connections_get_handle(); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
561 | |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
562 | gaim_signal_register(handle, "signing-on", |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
563 | gaim_marshal_VOID__POINTER, NULL, 1, |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
564 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
6597
c5302002f8c2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
565 | GAIM_SUBTYPE_CONNECTION)); |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
566 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
567 | gaim_signal_register(handle, "signed-on", |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
568 | gaim_marshal_VOID__POINTER, NULL, 1, |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
569 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
6597
c5302002f8c2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
570 | GAIM_SUBTYPE_CONNECTION)); |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
571 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
572 | gaim_signal_register(handle, "signing-off", |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
573 | gaim_marshal_VOID__POINTER, NULL, 1, |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
574 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
6597
c5302002f8c2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
575 | GAIM_SUBTYPE_CONNECTION)); |
|
6564
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
576 | |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
577 | gaim_signal_register(handle, "signed-off", |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
578 | gaim_marshal_VOID__POINTER, NULL, 1, |
|
a7a2c1927544
[gaim-migrate @ 7086]
Christian Hammond <chipx86@chipx86.com>
parents:
6533
diff
changeset
|
579 | gaim_value_new(GAIM_TYPE_SUBTYPE, |
|
6597
c5302002f8c2
[gaim-migrate @ 7121]
Christian Hammond <chipx86@chipx86.com>
parents:
6581
diff
changeset
|
580 | GAIM_SUBTYPE_CONNECTION)); |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
581 | } |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
582 | |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
583 | void |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
584 | gaim_connections_uninit(void) |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
585 | { |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
586 | gaim_signals_unregister_by_instance(gaim_connections_get_handle()); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
587 | } |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
588 | |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
589 | void * |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
590 | gaim_connections_get_handle(void) |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
591 | { |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
592 | return &connections_handle; |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6468
diff
changeset
|
593 | } |