Commit 2385f7b9 authored by Luke Bratch's avatar Luke Bratch

Try to make removenickfromallchannels() much faster when another user QUITs by...

Try to make removenickfromallchannels() much faster when another user QUITs by ignoring unused channel indexes.
parent be3913f2
......@@ -7,5 +7,3 @@ Add a make install/uninstall/etc., add an "INSTALL" file, include a dependency l
macOS compiler may need limits.h included in structures.h.
replaymode = "lastspoke" causes huge amounts of spam from extractnickfromprefix() and friends in full debug mode.
Very slow processing of removenickfromallchannels() when another user QUITs (sometimes).
......@@ -1432,6 +1432,10 @@ int removenickfromallchannels(char *nickuserhost, struct channel *channels) {
// Go through all channels and remove nick if present
for (int i = 0; i < MAXCHANNELS; i++) {
// Don't bother checking this channel index if it isn't used
if (!channels[i].name[0]) {
continue;
}
// Go through all nicks in channel
for (int j = 0; j < MAXCHANNICKS; j++) {
// Remove the nick from the channel if present
......
......@@ -267,7 +267,7 @@ int processservermessage(SSL *server_ssl, char *str, struct client *clients, int
if (strncmp(tokens[1], "QUIT", strlen(tokens[1])) == 0) {
debugprint(DEBUG_FULL, "Server QUIT found and it is: %s with length %zd! Next token is '%s'.\n", tokens[0], strlen(tokens[0]), tokens[2]);
// And then send to all clients
// Tell all clients
sendtoallclients(clients, str, sourcefd, settings);
// Write to replay log if replay logging enabled
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment