mirror of
https://github.com/irssi/irssi.git
synced 2025-02-02 15:08:01 -05:00
Postpone server cleanup until after unref
Add a new signal, server destroyed, that is supposed to run the clean up tasks of server disconnected. This is so that some structures will stay around longer.
This commit is contained in:
parent
e405330e04
commit
c9b3d87eb7
@ -524,6 +524,7 @@ int server_unref(SERVER_REC *server)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
signal_emit("server destroyed", 1, server);
|
||||
MODULE_DATA_DEINIT(server);
|
||||
server_connect_unref(server->connrec);
|
||||
if (server->rawlog != NULL) rawlog_destroy(server->rawlog);
|
||||
|
@ -104,7 +104,7 @@ static void sig_connected(SERVER_REC *server)
|
||||
MODULE_DATA_SET(server, g_new0(MODULE_SERVER_REC, 1));
|
||||
}
|
||||
|
||||
static void sig_disconnected(SERVER_REC *server)
|
||||
static void sig_destroyed(SERVER_REC *server)
|
||||
{
|
||||
void *data = MODULE_DATA(server);
|
||||
g_free(data);
|
||||
@ -203,7 +203,7 @@ void fe_common_core_init(void)
|
||||
settings_check();
|
||||
|
||||
signal_add_first("server connected", (SIGNAL_FUNC) sig_connected);
|
||||
signal_add_last("server disconnected", (SIGNAL_FUNC) sig_disconnected);
|
||||
signal_add_last("server destroyed", (SIGNAL_FUNC) sig_destroyed);
|
||||
signal_add_first("channel created", (SIGNAL_FUNC) sig_channel_created);
|
||||
signal_add_last("channel destroyed", (SIGNAL_FUNC) sig_channel_destroyed);
|
||||
|
||||
@ -249,7 +249,7 @@ void fe_common_core_deinit(void)
|
||||
|
||||
signal_remove("setup changed", (SIGNAL_FUNC) sig_setup_changed);
|
||||
signal_remove("server connected", (SIGNAL_FUNC) sig_connected);
|
||||
signal_remove("server disconnected", (SIGNAL_FUNC) sig_disconnected);
|
||||
signal_remove("server destroyed", (SIGNAL_FUNC) sig_destroyed);
|
||||
signal_remove("channel created", (SIGNAL_FUNC) sig_channel_created);
|
||||
signal_remove("channel destroyed", (SIGNAL_FUNC) sig_channel_destroyed);
|
||||
}
|
||||
|
@ -425,7 +425,7 @@ static void isupport_destroy_hash(void *key, void *value)
|
||||
g_free(value);
|
||||
}
|
||||
|
||||
static void sig_disconnected(IRC_SERVER_REC *server)
|
||||
static void sig_destroyed(IRC_SERVER_REC *server)
|
||||
{
|
||||
GSList *tmp;
|
||||
|
||||
@ -1031,7 +1031,7 @@ void irc_servers_init(void)
|
||||
cmd_tag = -1;
|
||||
|
||||
signal_add_first("server connected", (SIGNAL_FUNC) sig_connected);
|
||||
signal_add_last("server disconnected", (SIGNAL_FUNC) sig_disconnected);
|
||||
signal_add_last("server destroyed", (SIGNAL_FUNC) sig_destroyed);
|
||||
signal_add_last("server quit", (SIGNAL_FUNC) sig_server_quit);
|
||||
signal_add("event 001", (SIGNAL_FUNC) event_connected);
|
||||
signal_add("event 004", (SIGNAL_FUNC) event_server_info);
|
||||
@ -1058,7 +1058,7 @@ void irc_servers_deinit(void)
|
||||
g_source_remove(cmd_tag);
|
||||
|
||||
signal_remove("server connected", (SIGNAL_FUNC) sig_connected);
|
||||
signal_remove("server disconnected", (SIGNAL_FUNC) sig_disconnected);
|
||||
signal_remove("server destroyed", (SIGNAL_FUNC) sig_destroyed);
|
||||
signal_remove("server quit", (SIGNAL_FUNC) sig_server_quit);
|
||||
signal_remove("event 001", (SIGNAL_FUNC) event_connected);
|
||||
signal_remove("event 004", (SIGNAL_FUNC) event_server_info);
|
||||
|
@ -324,7 +324,7 @@ void irc_flood_init(void)
|
||||
read_settings();
|
||||
signal_add("setup changed", (SIGNAL_FUNC) read_settings);
|
||||
signal_add_first("server connected", (SIGNAL_FUNC) flood_init_server);
|
||||
signal_add("server disconnected", (SIGNAL_FUNC) flood_deinit_server);
|
||||
signal_add("server destroyed", (SIGNAL_FUNC) flood_deinit_server);
|
||||
|
||||
autoignore_init();
|
||||
settings_check();
|
||||
@ -344,5 +344,5 @@ void irc_flood_deinit(void)
|
||||
|
||||
signal_remove("setup changed", (SIGNAL_FUNC) read_settings);
|
||||
signal_remove("server connected", (SIGNAL_FUNC) flood_init_server);
|
||||
signal_remove("server disconnected", (SIGNAL_FUNC) flood_deinit_server);
|
||||
signal_remove("server destroyed", (SIGNAL_FUNC) flood_deinit_server);
|
||||
}
|
||||
|
@ -331,7 +331,7 @@ void irc_notifylist_init(void)
|
||||
notifylist_ison_init();
|
||||
notifylist_whois_init();
|
||||
signal_add("server connected", (SIGNAL_FUNC) notifylist_init_server);
|
||||
signal_add("server disconnected", (SIGNAL_FUNC) notifylist_deinit_server);
|
||||
signal_add("server destroyed", (SIGNAL_FUNC) notifylist_deinit_server);
|
||||
signal_add("event quit", (SIGNAL_FUNC) event_quit);
|
||||
signal_add("event privmsg", (SIGNAL_FUNC) event_privmsg);
|
||||
signal_add("event join", (SIGNAL_FUNC) event_join);
|
||||
@ -349,7 +349,7 @@ void irc_notifylist_deinit(void)
|
||||
notifylist_whois_deinit();
|
||||
|
||||
signal_remove("server connected", (SIGNAL_FUNC) notifylist_init_server);
|
||||
signal_remove("server disconnected", (SIGNAL_FUNC) notifylist_deinit_server);
|
||||
signal_remove("server destroyed", (SIGNAL_FUNC) notifylist_deinit_server);
|
||||
signal_remove("event quit", (SIGNAL_FUNC) event_quit);
|
||||
signal_remove("event privmsg", (SIGNAL_FUNC) event_privmsg);
|
||||
signal_remove("event join", (SIGNAL_FUNC) event_join);
|
||||
|
Loading…
Reference in New Issue
Block a user