All the TODOs sprinkled throughout the code! Configurable rotation of replay and debug logs. Automatic rotation of replay log along with debug log? Especially given that replay from before startup is not sent. Configurable timestamp format in logs. macOS compiler may need limits.h included in structures.h. "Starting log replay...." followed by "Unable to read replay log file!" even though replay seemed to work? Can memory usage be reduced further? (e.g. better channel struct management) Ability to load new certificate whilst running. Remaining strncmps are safe but could do with length comparisons too. "Our initial MODE" comparison may need to be more complex. "/topic" response goes to all clients. Connection/login logging - is debug.log sufficient? Do connectcommands happen on reconnect? Are "no such nick/channel" messages as shown in clients correct compared to non-(bla)bouncer clients? Other IRC clients log stuff like "Mar 31 16:58:15 * #foobar :No topic is set." - can/should we? Git version in code. Connecting from irssi triggers doautoreplay() from "USER received" in message.c twice. Use the line number based replay log reading method from lastspoke rather than the inefficient re-read + line offset method in time replays? (And potentially remove a bunch of code re-use.) What happens with lastspoke when there was no lastspoke time? Potentially opt to fall back on time based. And/or add lastspoke + time? Is it possible to periodically reduce fdmax if higher numbered clients are gone? Debug log ("checking client socket out of ") gets busy after fdmax gets relatively high, and might be possible to avoid unnecessary looping. BLABOUNCER/stdin functions to add: - List connected/authenticated clients KICK not handled. Crash when requesting 30 hour replay. "too many clients, disconnecting and skipping loop iteration!" has been seen in the real world, e.g. Wed Jul 12 16:44:57 2023