diff --git a/src/core/server.c b/src/core/server.c index 33e79856..f9ebf682 100644 --- a/src/core/server.c +++ b/src/core/server.c @@ -43,6 +43,8 @@ static void server_cant_connect(SERVER_REC *server, const char *msg) signal_emit("server connect failed", 2, server, msg); if (server->connect_tag != -1) g_source_remove(server->connect_tag); + if (server->handle != NULL) + net_sendbuffer_destroy(server->handle, TRUE); if (server->connect_pipe[0] != -1) { close(server->connect_pipe[0]); @@ -50,8 +52,8 @@ static void server_cant_connect(SERVER_REC *server, const char *msg) } MODULE_DATA_DEINIT(server); + g_free_not_null(server->nick); g_free(server->tag); - g_free(server->nick); g_free(server); } @@ -235,8 +237,10 @@ void server_disconnect(SERVER_REC *server) MODULE_DATA_DEINIT(server); rawlog_destroy(server->rawlog); line_split_free(server->buffer); - g_free(server->tag); + g_free_not_null(server->version); + g_free_not_null(server->away_reason); g_free(server->nick); + g_free(server->tag); g_free(server); } diff --git a/src/irc/core/irc-server.c b/src/irc/core/irc-server.c index 898f281e..a0b4b046 100644 --- a/src/irc/core/irc-server.c +++ b/src/irc/core/irc-server.c @@ -231,15 +231,16 @@ static void sig_disconnected(IRC_SERVER_REC *server) irc_server_connect_free(server->connrec); g_free_not_null(server->real_address); - g_free_not_null(server->version); g_free_not_null(server->usermode); g_free_not_null(server->userhost); g_free_not_null(server->last_invite); - g_free_not_null(server->away_reason); } static void sig_connect_failed(IRC_SERVER_REC *server) { + if (!irc_server_check(server)) + return; + server_remove_channels(server); irc_server_connect_free(server->connrec); }