diff options
author | Timo Sirainen <cras@irssi.org> | 2001-12-03 20:09:17 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2001-12-03 20:09:17 +0000 |
commit | 09b380536fc30548c9ec1258e1a93dfc0a65727a (patch) | |
tree | 04ef70250b9b78b31a3e759662ceec0e3dbd3d42 /src/irc/core | |
parent | 782ac81f2c0cce874cb899ac440fab404f35721a (diff) | |
download | irssi-09b380536fc30548c9ec1258e1a93dfc0a65727a.zip |
"channel wholist" was sent to channels that hadn't received /WHO list yet.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2187 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/irc/core')
-rw-r--r-- | src/irc/core/channels-query.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/irc/core/channels-query.c b/src/irc/core/channels-query.c index bbb7eb8b..731e5bd2 100644 --- a/src/irc/core/channels-query.c +++ b/src/irc/core/channels-query.c @@ -444,12 +444,12 @@ static void event_end_of_who(IRC_SERVER_REC *server, const char *data) SERVER_QUERY_REC *rec; GSList *tmp, *next; char *params, *channel; - int failed; + int failed, multiple; g_return_if_fail(data != NULL); params = event_get_params(data, 2, NULL, &channel); - server->one_endofwho = strchr(channel, ',') != NULL; + multiple = strchr(channel, ',') != NULL; failed = FALSE; rec = server->chanqueries; @@ -457,19 +457,24 @@ static void event_end_of_who(IRC_SERVER_REC *server, const char *data) IRC_CHANNEL_REC *chanrec = tmp->data; next = tmp->next; - if (chanrec->ownnick->host == NULL && !server->one_endofwho) { + if (chanrec->ownnick->host == NULL && multiple && + !server->one_endofwho) { /* we should receive our own host for each channel. However, some servers really are stupid enough not to reply anything to /WHO requests.. */ failed = TRUE; - } else { + } else if (chanrec->ownnick->host != NULL || + server->one_endofwho) { chanrec->wholist = TRUE; signal_emit("channel wholist", 1, chanrec); channel_got_query(chanrec, CHANNEL_QUERY_WHO); } } - if (server->one_endofwho && failed) { + if (multiple) + server->one_endofwho = TRUE; + + if (failed) { /* server didn't understand multiple WHO replies, send them again separately */ query_current_error(server); |