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? Support ban list when requesting /mode #channel +b (commands 367 and 368 at least) - ensure max ban list length is supported. example: :irc.tghost.co.uk 367 l_bratch #foo *!foo@bar.bz l_bratch 1642588731 :irc.tghost.co.uk 367 l_bratch #foo *!*bbuser@*.bratch.co.uk l_bratch 1642588681 :irc.tghost.co.uk 368 l_bratch #foo :End of Channel Ban List Or if there are no bans then just 368: :irc.tghost.co.uk 368 l_bratch #foo :End of Channel Ban List Other IRC clients log stuff like "Mar 31 16:58:15 * #foobar :No topic is set." - can/should we? Some servers have a user send ^VERSION^ upon connection - (optionally?) respond to it. Git version in code. Sending ^D when running with ./blabouncer -f does crazy stuff. 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? Crash when requesting 30 hour replay. Crash efnet 21/03/2023 20:32:25, possibly on sendtoserver() after a series of trying/failing to reconnect to disconnceted/timed-out server (no socket fd?).