Mercurial > pidgin
comparison src/connection.c @ 6018:d4caf585f6ff
[gaim-migrate @ 6468]
Nizathan: I'm reverting your connection.c changes that were supposed to
fix jabber (at least, I hope so).
It was causing aim to crash on signon because do_away_menu() was getting
called when the aim gc existed, but was signed offline (and the aim away
menu thing looks at gc->data, which has already been freed by this point).
You should talk to Christian if you have any questions, because I don't
really know what's going on :-)
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Fri, 04 Jul 2003 21:29:55 +0000 |
| parents | 9ab75d4fafac |
| children | 38999b6b1838 |
comparison
equal
deleted
inserted
replaced
| 6017:968a00c9f230 | 6018:d4caf585f6ff |
|---|---|
| 48 gc->prpl = gaim_find_prpl(gaim_account_get_protocol(account)); | 48 gc->prpl = gaim_find_prpl(gaim_account_get_protocol(account)); |
| 49 | 49 |
| 50 gaim_connection_set_account(gc, account); | 50 gaim_connection_set_account(gc, account); |
| 51 gaim_account_set_connection(account, gc); | 51 gaim_account_set_connection(account, gc); |
| 52 | 52 |
| 53 connections = g_list_append(connections, gc); | |
| 54 | |
| 55 return gc; | 53 return gc; |
| 56 } | 54 } |
| 57 | 55 |
| 58 void | 56 void |
| 59 gaim_connection_destroy(GaimConnection *gc) | 57 gaim_connection_destroy(GaimConnection *gc) |
| 68 return; | 66 return; |
| 69 } | 67 } |
| 70 | 68 |
| 71 gaim_debug(GAIM_DEBUG_INFO, "connection", | 69 gaim_debug(GAIM_DEBUG_INFO, "connection", |
| 72 "Destroying connection %p\n", gc); | 70 "Destroying connection %p\n", gc); |
| 73 | |
| 74 connections = g_list_remove(connections, gc); | |
| 75 | 71 |
| 76 account = gaim_connection_get_account(gc); | 72 account = gaim_connection_get_account(gc); |
| 77 gaim_account_set_connection(account, NULL); | 73 gaim_account_set_connection(account, NULL); |
| 78 | 74 |
| 79 if (gc->display_name != NULL) | 75 if (gc->display_name != NULL) |
| 120 | 116 |
| 121 gaim_connection_set_state(gc, GAIM_CONNECTING); | 117 gaim_connection_set_state(gc, GAIM_CONNECTING); |
| 122 | 118 |
| 123 gaim_debug(GAIM_DEBUG_INFO, "connection", "Calling serv_login\n"); | 119 gaim_debug(GAIM_DEBUG_INFO, "connection", "Calling serv_login\n"); |
| 124 | 120 |
| 121 connections = g_list_append(connections, gc); | |
| 122 | |
| 125 serv_login(account); | 123 serv_login(account); |
| 126 } | 124 } |
| 127 | 125 |
| 128 void | 126 void |
| 129 gaim_connection_disconnect(GaimConnection *gc) | 127 gaim_connection_disconnect(GaimConnection *gc) |
| 146 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { | 144 if (gaim_connection_get_state(gc) != GAIM_DISCONNECTED) { |
| 147 if (gaim_connection_get_state(gc) != GAIM_CONNECTING) | 145 if (gaim_connection_get_state(gc) != GAIM_CONNECTING) |
| 148 gaim_blist_remove_account(gaim_connection_get_account(gc)); | 146 gaim_blist_remove_account(gaim_connection_get_account(gc)); |
| 149 | 147 |
| 150 serv_close(gc); | 148 serv_close(gc); |
| 149 | |
| 150 connections = g_list_remove(connections, gc); | |
| 151 | 151 |
| 152 gaim_connection_set_state(gc, GAIM_DISCONNECTED); | 152 gaim_connection_set_state(gc, GAIM_DISCONNECTED); |
| 153 | 153 |
| 154 gaim_event_broadcast(event_signoff, gc); | 154 gaim_event_broadcast(event_signoff, gc); |
| 155 system_log(log_signoff, gc, NULL, | 155 system_log(log_signoff, gc, NULL, |
| 346 | 346 |
| 347 if (ops != NULL && ops->notice != NULL) | 347 if (ops != NULL && ops->notice != NULL) |
| 348 ops->notice(gc, text); | 348 ops->notice(gc, text); |
| 349 } | 349 } |
| 350 | 350 |
| 351 static gboolean disconnect_conn_cb(gpointer data) | |
| 352 { | |
| 353 GaimAccount *account = (GaimAccount *)data; | |
| 354 GaimConnection *gc; | |
| 355 | |
| 356 gc = gaim_account_get_connection(account); | |
| 357 | |
| 358 if (gc != NULL) | |
| 359 gaim_connection_disconnect(data); | |
| 360 | |
| 361 return FALSE; | |
| 362 } | |
| 363 | |
| 364 void | 351 void |
| 365 gaim_connection_error(GaimConnection *gc, const char *text) | 352 gaim_connection_error(GaimConnection *gc, const char *text) |
| 366 { | 353 { |
| 367 GaimConnectionUiOps *ops; | 354 GaimConnectionUiOps *ops; |
| 368 | 355 |
| 372 ops = gaim_get_connection_ui_ops(); | 359 ops = gaim_get_connection_ui_ops(); |
| 373 | 360 |
| 374 if (ops != NULL && ops->disconnected != NULL) | 361 if (ops != NULL && ops->disconnected != NULL) |
| 375 ops->disconnected(gc, text); | 362 ops->disconnected(gc, text); |
| 376 | 363 |
| 377 g_timeout_add(0, disconnect_conn_cb, gaim_connection_get_account(gc)); | 364 gaim_connection_disconnect(gc); |
| 378 } | 365 } |
| 379 | 366 |
| 380 void | 367 void |
| 381 gaim_connections_disconnect_all(void) | 368 gaim_connections_disconnect_all(void) |
| 382 { | 369 { |
