Thanks for the feedback. mIRC does indeed close the UPnP port right after it has accepted the incoming connection. This seems to work fine for me under the two different routers that I own and for other users who have tested out the UPnP support.

That said, different routers implement UPnP support slightly differently. Perhaps some routers require an application to wait a few seconds after the incoming connection has been accepted before closing the UPnP port. Or it may be that they require the UPnP port to remain open for the lifetime of the socket connection.

mIRC closes the UPnP port for security reasons ie. to make sure the port is not left open on your system any longer that it needs to be. However, I can change this so that mIRC waits a few seconds before closing the port, after accepting the incoming connection. This should be in the next version.