irc: send QUIT to server and no PART for channels when the server buffer is closed (closes #294)

This commit is contained in:
Sébastien Helleu 2015-01-17 15:18:50 +01:00
parent 0d60871ec6
commit 99d20e97c6
2 changed files with 10 additions and 4 deletions

View File

@ -22,6 +22,8 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
=== Bugs fixed === 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 * 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 is set to "independent", irc.look.buffer_open_before_autojoin to "on" and
irc.look.new_channel_position to "near_server" (closes #303) irc.look.new_channel_position to "near_server" (closes #303)

View File

@ -141,16 +141,20 @@ irc_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
{ {
if (ptr_server) 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; ptr_channel = ptr_server->channels;
while (ptr_channel) while (ptr_channel)
{ {
next_channel = ptr_channel->next_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; ptr_channel = next_channel;
} }
if (!ptr_server->disconnected)
irc_server_disconnect (ptr_server, 0, 0);
ptr_server->buffer = NULL; ptr_server->buffer = NULL;
} }
} }