When a /socklisten socket is bound to ipv6, mIRC is not attempting to forward the port using upnp if the -p switch is used, which is correct because ipv6 does not have port forwarding.
However dual socket changed the game, now there is a problem: when you create a listening dual socket, you bind to ipv6, but you're allowing ipv4 as well, therefore mIRC should actually be forwarding the port with upnp on ipv4 in this case.
//socklisten -dp 0.0.0.0 name port
Upnp works on ipv4 -- correct
//socklisten -dp :: name port
Upnp doesn't work on ipv6 -- correct
//socklisten -dpu :: name port
Upnp doesn't work on dual socket for ipv4