I have a DI-604 myself, so I'm interested what setup you're using. I use an Application entry triggered on TCP 6661-6669 to enable 59,113,12000-12499. If I want to IRC from another computer, I just allow it to ident off the one already connected. It really sucks this router wont let you forward "Virtual Server" a range of ports with exception to the above feature.
I apologize if my previous post keeps flip-flopping using different terminologies, but I didn't learn about TCP/IP from a single source so I mix and match phrases like "client port" with "local port" and "connecting socket" vs "server port" and "listening socket". It's often difficult to explain TCP because there are different vantage points depending on what you're trying to accomplish.
To answer your last question, I would say the former because mIRC is still a simple single threaded app and seems to hang when any significant flood of data ties up one of the connections. Process Explorer says mIRC uses 2 threads, this could be a timer object, I don't know. I think multi-threaded anything would break mIRC Script with race conditions.
- Raccoon