Did mIRC return 0 channels immediately after quitting? Or some random time after?
The /list window opened with 0 channels listed in it immediately upon hitting enter after typing /QUIT or /DISCONNECT. (It literally "felt" like /QUIT itself was invoking the channel list window each time it happened to me -- until I realized what was truly going on.)
Since my first post, I figured out how to reproduce the problem. The server I encountered was running Beware IRCd -- an Undernet IRCu clone for Windows 9x/NT/XP and Linux. Turns out it's very easy to download and configure it such that this mIRC bug can be reproduced:
1. Unpack http://ircd.bircd.org/bewareircd-win32.zip
to a temp folder (there is no OS installation process).
2. Open bircd.ini in text editor, scroll all the way to the bottom, find "OperOnlyCmds=", change it to "OperOnlyCmds=LIST", re-save bircd.ini. (This is what will cause the IRCd to send a 481 response in reply to /LIST in mIRC.)
3. Execute bircd.exe with no commandline parameters.
4. In mIRC, /server 127.0.0.1 6667
5. Once connected, type /LIST
6. [do anything here with the server that you wish, for any period of time you wish]
7. /QUIT, and mIRC's channel list window will immediately open.
8. Execute "bircd signal stop", then delete temp folder you unpacked Beware IRCD into.
i'm really not crazy about how mIRC handles /list; how we're not able to control the list window, how $line() is inaccurate with it, etc.
The design of mIRC's channel listing window seems to be an homage to mIRC's earliest years, yeah. The main way I'd love to see it modernized is the addition of re-sizable column headers that are also clickable for changing sort order. (Re-sizability being the really important part, considering that many IRC networks allow channel names long enough these days to be truncated in mIRC's list)
it's not a great solution, since /list performs a little handling before sending a request to the server, but you can use /raw list <parms> to send a request directly to the server and override the mechanism that prepares mIRC for receiving the list of channels. that way, if the server sends back an unrecognized response, nothing will have changed internally :P