1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-26 04:46:37 +02:00

relay: fix freeze after /upgrade when many disconnected clients still exist

The hooks for the WeeChat disconnected clients are not created again
after /upgrade (they were removed on client disconnection, so there is
no reason to create them again).

The hooks like nicklist sync are called often (for example on irc
disconnection), which can cause long freeze if many WeeChat disconnected
clients exist in relay.
This commit is contained in:
Sebastien Helleu
2014-02-23 13:07:45 +01:00
parent 1cd1877128
commit 897bb0950c
2 changed files with 9 additions and 1 deletions
+1
View File
@@ -48,6 +48,7 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
* lua: fix interpreter used after unload of a script
* perl: fix context used after unload of a script
* python: fix interpreter used after unload of a script
* relay: fix freeze after /upgrade when many disconnected clients still exist
* relay: fix NULL pointer when reading buffer lines for irc backlog
* scripts: fix crash when a signal is received with type "int" and NULL pointer
in signal_data
+8 -1
View File
@@ -260,7 +260,14 @@ relay_weechat_alloc_with_infolist (struct t_relay_client *client,
&relay_weechat_free_buffers_nicklist);
RELAY_WEECHAT_DATA(client, hook_timer_nicklist) = NULL;
relay_weechat_hook_signals (client);
if (RELAY_CLIENT_HAS_ENDED(client))
{
RELAY_WEECHAT_DATA(client, hook_signal_buffer) = NULL;
RELAY_WEECHAT_DATA(client, hook_hsignal_nicklist) = NULL;
RELAY_WEECHAT_DATA(client, hook_signal_upgrade) = NULL;
}
else
relay_weechat_hook_signals (client);
}
}