From 5dd36f8fda368d37b91d429933b189bc1c479436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Sat, 17 Jan 2015 15:18:50 +0100 Subject: [PATCH] irc: send QUIT to server and no PART for channels when the server buffer is closed (closes #294) (cherry picked from commit 99d20e97c61c917db3d65c68a094dcfc4a2d7eb1) --- ChangeLog.asciidoc | 2 ++ src/plugins/irc/irc-buffer.c | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog.asciidoc b/ChangeLog.asciidoc index 25ae3b0d5..dcc493032 100644 --- a/ChangeLog.asciidoc +++ b/ChangeLog.asciidoc @@ -17,6 +17,8 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] === Bugs fixed +* irc: send QUIT to server and no PART for channels when the server buffer + is closed (closes #294) * irc: fix order of channel buffers opened when option irc.look.server_buffer is set to "independent", irc.look.buffer_open_before_autojoin to "on" and irc.look.new_channel_position to "near_server" (closes #303) diff --git a/src/plugins/irc/irc-buffer.c b/src/plugins/irc/irc-buffer.c index ac4849c4c..c7daa2c23 100644 --- a/src/plugins/irc/irc-buffer.c +++ b/src/plugins/irc/irc-buffer.c @@ -141,16 +141,20 @@ irc_buffer_close_cb (void *data, struct t_gui_buffer *buffer) { if (ptr_server) { - /* send PART on all channels for server, then disconnect from server */ + if (!ptr_server->disconnected) + { + /* send QUIT to server, then disconnect */ + irc_command_quit_server (ptr_server, NULL); + irc_server_disconnect (ptr_server, 0, 0); + } ptr_channel = ptr_server->channels; while (ptr_channel) { next_channel = ptr_channel->next_channel; - weechat_buffer_close (ptr_channel->buffer); + if (ptr_channel->buffer != buffer) + weechat_buffer_close (ptr_channel->buffer); ptr_channel = next_channel; } - if (!ptr_server->disconnected) - irc_server_disconnect (ptr_server, 0, 0); ptr_server->buffer = NULL; } }