Mercurial > pidgin
comparison src/connection.c @ 10745:ca69d597a5e2
[gaim-migrate @ 12347]
Get rid of serv_close (I got rid of serv_login earlier today).
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 27 Mar 2005 01:59:39 +0000 |
parents | 4228b6d78506 |
children | bf5e48215158 |
comparison
equal
deleted
inserted
replaced
10744:1b927566fcc4 | 10745:ca69d597a5e2 |
---|---|
39 static GList *connections_connecting = NULL; | 39 static GList *connections_connecting = NULL; |
40 static GaimConnectionUiOps *connection_ui_ops = NULL; | 40 static GaimConnectionUiOps *connection_ui_ops = NULL; |
41 | 41 |
42 static int connections_handle; | 42 static int connections_handle; |
43 | 43 |
44 static gboolean | |
45 send_keepalive(gpointer data) | |
46 { | |
47 GaimConnection *gc = data; | |
48 GaimPluginProtocolInfo *prpl_info = NULL; | |
49 | |
50 if (gc != NULL && gc->prpl != NULL) | |
51 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
52 | |
53 if (prpl_info && prpl_info->keepalive) | |
54 prpl_info->keepalive(gc); | |
55 | |
56 return TRUE; | |
57 } | |
58 | |
59 static void | |
60 update_keepalive(GaimConnection *gc, gboolean on) | |
61 { | |
62 if (on && !gc->keepalive) | |
63 { | |
64 gaim_debug_info("connection", "Activating keepalive.\n"); | |
65 gc->keepalive = gaim_timeout_add(30000, send_keepalive, gc); | |
66 } | |
67 else if (!on && gc->keepalive > 0) | |
68 { | |
69 gaim_debug_info("connection", "Deactivating keepalive.\n"); | |
70 gaim_timeout_remove(gc->keepalive); | |
71 gc->keepalive = 0; | |
72 } | |
73 } | |
74 | |
44 void | 75 void |
45 gaim_connection_new(GaimAccount *account, gboolean regist, const char *password) | 76 gaim_connection_new(GaimAccount *account, gboolean regist, const char *password) |
46 { | 77 { |
47 GaimConnection *gc; | 78 GaimConnection *gc; |
48 GaimPlugin *prpl; | 79 GaimPlugin *prpl; |
117 | 148 |
118 g_return_if_fail(gc != NULL); | 149 g_return_if_fail(gc != NULL); |
119 | 150 |
120 account = gaim_connection_get_account(gc); | 151 account = gaim_connection_get_account(gc); |
121 | 152 |
122 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { | 153 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) |
154 { | |
123 GList *wins; | 155 GList *wins; |
124 GaimPresence *presence = NULL; | 156 GaimPresence *presence = NULL; |
157 GaimPluginProtocolInfo *prpl_info = NULL; | |
125 | 158 |
126 gaim_debug_info("connection", "Disconnecting connection %p\n", gc); | 159 gaim_debug_info("connection", "Disconnecting connection %p\n", gc); |
127 | 160 |
128 if (gaim_connection_get_state(gc) != GAIM_CONNECTING) | 161 if (gaim_connection_get_state(gc) != GAIM_CONNECTING) |
129 gaim_blist_remove_account(gaim_connection_get_account(gc)); | 162 gaim_blist_remove_account(account); |
130 | 163 |
131 gaim_signal_emit(gaim_connections_get_handle(), "signing-off", gc); | 164 gaim_signal_emit(gaim_connections_get_handle(), "signing-off", gc); |
132 | 165 |
133 serv_close(gc); | 166 while (gc->buddy_chats) |
167 { | |
168 GaimConversation *b = gc->buddy_chats->data; | |
169 | |
170 gc->buddy_chats = g_slist_remove(gc->buddy_chats, b); | |
171 gaim_conv_chat_left(GAIM_CONV_CHAT(b)); | |
172 } | |
173 | |
174 if (gc->idle_timer > 0) | |
175 gaim_timeout_remove(gc->idle_timer); | |
176 gc->idle_timer = 0; | |
177 | |
178 update_keepalive(gc, FALSE); | |
179 | |
180 if (gc->prpl != NULL) | |
181 { | |
182 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); | |
183 | |
184 if (prpl_info->close) | |
185 (prpl_info->close)(gc); | |
186 } | |
134 | 187 |
135 connections = g_list_remove(connections, gc); | 188 connections = g_list_remove(connections, gc); |
136 | 189 |
137 gaim_connection_set_state(gc, GAIM_DISCONNECTED); | 190 gaim_connection_set_state(gc, GAIM_DISCONNECTED); |
138 | 191 |
274 serv_add_buddies(gc, add_buds); | 327 serv_add_buddies(gc, add_buds); |
275 g_list_free(add_buds); | 328 g_list_free(add_buds); |
276 } | 329 } |
277 | 330 |
278 serv_set_permit_deny(gc); | 331 serv_set_permit_deny(gc); |
332 | |
333 update_keepalive(gc, TRUE); | |
279 } | 334 } |
280 else if (gc->state == GAIM_DISCONNECTED) { | 335 else if (gc->state == GAIM_DISCONNECTED) { |
281 GaimAccount *account = gaim_connection_get_account(gc); | 336 GaimAccount *account = gaim_connection_get_account(gc); |
282 | 337 |
283 if(gaim_prefs_get_bool("/core/logging/log_system") && | 338 if(gaim_prefs_get_bool("/core/logging/log_system") && |