diff --git a/ChangeLog b/ChangeLog index cbefb0009..96c42b60a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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 diff --git a/src/plugins/relay/weechat/relay-weechat.c b/src/plugins/relay/weechat/relay-weechat.c index ba3cfbe1c..697e6867f 100644 --- a/src/plugins/relay/weechat/relay-weechat.c +++ b/src/plugins/relay/weechat/relay-weechat.c @@ -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); } }