From a72f7244ff581edbeb4f8552eba92bbb6ee09ba8 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 2 Jan 2002 21:21:49 +0000 Subject: [PATCH] server_disconnect() should do nothing if you call it twice, especially it shouldn't emit the "server disconnected" again. We'll now handle the remaining data coming from server after disconnection. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2290 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- src/core/servers.c | 3 +++ src/irc/core/irc.c | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/servers.c b/src/core/servers.c index 725010a8..89f32aea 100644 --- a/src/core/servers.c +++ b/src/core/servers.c @@ -334,6 +334,9 @@ void server_disconnect(SERVER_REC *server) g_return_if_fail(IS_SERVER(server)); + if (server->disconnected) + return; + if (server->connect_tag != -1) { /* still connecting to server.. */ if (server->connect_pid != -1) diff --git a/src/irc/core/irc.c b/src/irc/core/irc.c index 64ce4af6..f2827132 100644 --- a/src/irc/core/irc.c +++ b/src/irc/core/irc.c @@ -376,8 +376,7 @@ static void irc_parse_incoming(SERVER_REC *server) letting other tasks to run. */ count = 0; server_ref(server); - while (!server->disconnected && - irc_receive_line(server, &str, count < MAX_SOCKET_READS) > 0) { + while (irc_receive_line(server, &str, count < MAX_SOCKET_READS) > 0) { rawlog_input(server->rawlog, str); signal_emit_id(signal_server_incoming, 2, server, str);