summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2002-03-31 19:07:23 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2002-03-31 19:07:23 +0000
commitbfae72766ea2da6db76f6f23bccaf7a5dd708c94 (patch)
tree25ea17fb67008ee938dc15d2f94fbb394fb41993
parentdc4b7456dcb1f6806b7a68188cb4f1db78bf75c3 (diff)
downloadirssi-bfae72766ea2da6db76f6f23bccaf7a5dd708c94.zip
Don't set channel->server = NULL when disconnecting, so scripts can still
use it in eg. "channel destroyed". Patch by Qrczak git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2648 dbcabf3a-b0e7-0310-adc4-f8d773084564
-rw-r--r--src/core/channels.c2
-rw-r--r--src/core/servers.c1
-rw-r--r--src/fe-common/core/fe-channels.c2
-rw-r--r--src/irc/core/channel-rejoin.c2
-rw-r--r--src/irc/core/channels-query.c2
-rw-r--r--src/irc/core/irc-channels.c2
6 files changed, 5 insertions, 6 deletions
diff --git a/src/core/channels.c b/src/core/channels.c
index 06bf0c41..1884c402 100644
--- a/src/core/channels.c
+++ b/src/core/channels.c
@@ -64,7 +64,7 @@ void channel_destroy(CHANNEL_REC *channel)
channel->destroying = TRUE;
channels = g_slist_remove(channels, channel);
- if (channel->server != NULL)
+ if (!channel->server->disconnected)
channel->server->channels = g_slist_remove(channel->server->channels, channel);
signal_emit("channel destroyed", 1, channel);
diff --git a/src/core/servers.c b/src/core/servers.c
index a5a8c701..f99b238f 100644
--- a/src/core/servers.c
+++ b/src/core/servers.c
@@ -331,7 +331,6 @@ static int server_remove_channels(SERVER_REC *server)
for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
CHANNEL_REC *channel = tmp->data;
- channel->server = NULL;
channel_destroy(channel);
found = TRUE;
}
diff --git a/src/fe-common/core/fe-channels.c b/src/fe-common/core/fe-channels.c
index ec5d395b..712ae1c4 100644
--- a/src/fe-common/core/fe-channels.c
+++ b/src/fe-common/core/fe-channels.c
@@ -67,7 +67,7 @@ static void signal_channel_destroyed(CHANNEL_REC *channel)
window_item_destroy((WI_ITEM_REC *) channel);
if (channel->joined && !channel->left &&
- channel->server != NULL) {
+ !channel->server->disconnected) {
/* kicked out from channel */
window_bind_add(window, channel->server->tag,
channel->name);
diff --git a/src/irc/core/channel-rejoin.c b/src/irc/core/channel-rejoin.c
index 174c1c4e..582f1d0c 100644
--- a/src/irc/core/channel-rejoin.c
+++ b/src/irc/core/channel-rejoin.c
@@ -162,7 +162,7 @@ static void sig_remove_rejoin(IRC_CHANNEL_REC *channel)
{
REJOIN_REC *rec;
- if (!IS_IRC_CHANNEL(channel) || channel->server == NULL)
+ if (!IS_IRC_CHANNEL(channel))
return;
rec = rejoin_find(channel->server, channel->name);
diff --git a/src/irc/core/channels-query.c b/src/irc/core/channels-query.c
index 06cfdb3a..bc5ebf3a 100644
--- a/src/irc/core/channels-query.c
+++ b/src/irc/core/channels-query.c
@@ -132,7 +132,7 @@ static void sig_channel_destroyed(IRC_CHANNEL_REC *channel)
{
g_return_if_fail(channel != NULL);
- if (IS_IRC_CHANNEL(channel) && channel->server != NULL &&
+ if (IS_IRC_CHANNEL(channel) && !channel->server->disconnected &&
!channel->synced)
query_remove_all(channel);
}
diff --git a/src/irc/core/irc-channels.c b/src/irc/core/irc-channels.c
index 75741355..59726d22 100644
--- a/src/irc/core/irc-channels.c
+++ b/src/irc/core/irc-channels.c
@@ -192,7 +192,7 @@ static void sig_channel_destroyed(IRC_CHANNEL_REC *channel)
if (!IS_IRC_CHANNEL(channel))
return;
- if (channel->server != NULL && !channel->left && !channel->kicked) {
+ if (!channel->server->disconnected && !channel->left && !channel->kicked) {
/* destroying channel record without actually
having left the channel yet */
signal_emit("command part", 3, "", channel->server, channel);