ISSUE 1. User has mIRC automatically connecting to irc.irchighway.net when mIRC starts using Connect at Startup rather than a script. The user is NOT issuing a /server -6 command manually or via a script and mIRC is NOT set to use IPv4 by default.
This is working as intended.
This is - as far as I can see anyway - NOT working as intended. User has NOT got IPv6 prioritised yet their server connection to irc.irchighway.net is by IPv6 even though there is an IPv4 address. IMO this is a bug.
The Windows Winsock API does not resolve IPv6 addresses on IPv4-only systems. Microsoft intentionally placed this limitation on the API. The nslookup command actually has to work around this limitation to find the IPv6 address. There is a way to make the API resolve IPv6 addresses on IPv4-only systems but it requires a DOS prompt and a netsh call.
Accepted - you have to work within the limitations of Windows. I will look into the netsh call and document it on Wikichips, but you are right IMO not to ask users to use netsh.
The reason that /dns defaults to IPv4 is that there is no point in returning IPv6 addresses for users who are on a non-IPv6 system. These addresses would be unusable, unless a user/script has a specific need for it, in which case they can choose to override the default by using /dns -6.
This is (as far as I can see anyway) NOT working as intended. /dns does NOT default always to IPv4 - even when this user is not connected, /dns defaults to IPv6. But, IMO, /dns should ALWAYS be equivalent to -46 (though obviously if user is only one either IPv4 or IPv6 but not both
or if the server you are looking for is only on IPv4 or IPv6 then you are only going to get one type of resolution. I do not think that changing /dns to be equivalent to -46 would create any backwards compatibility - as and on DNS scripts should already be coded to cope with IPv4/6 responses.
2. A slightly different issue (which might have the same cause) is when you try to connect to a different server that is only IPv4.
This is working as intended.
When you create an IPv4 server window, everything defaults to IPv4, including /dns.
When you create an IPv6 server window, everything defaults to IPv6, including /dns.
If you have IPv6 prioritized in the Ports dialog, everything defaults to IPv6 then IPv4, including /dns.
These behaviours were established a long time ago after much discussion and, as far as I can tell, they are working as intended.
Despite much discussion a long time ago (and if you can provide a reference to it I can go and see what it says), I think this behaviour is wrong! (I would happily concede that an IPv6 IRC connection should prioritise other (non-IRC) IPv6 connections over IPv4, but not that it should prevent IPv4 connections when this is the only option (or vice versa if you are IPv4 and trying to connect to an IPv6-only address).
P.S. I have now configured Teredo and have IPv6 connectivity, and so can test stuff.