Originally Posted By: Wiz126
That's absolutely incorrect. Try testing it first yourself. (For the part I was talking about)


Funny, actually *ALL* of my IRC connections are IPv6. I connect to IPv4 addresses via /sockopen many times daily, every day, from these IPv6 connections. I *did* test this before responding with mIRC's actual behaviour.

Originally Posted By: Wiz126
This can be repeated as many times as you want, and on each connection it will based on that connection type (ipv4 or ipv6)


This is NOT the behaviour I see.

On an IPv6 server with no special adapter settings:

Code:
/dns google.com

(00:56:36) * Dns resolving google.com
-
(00:56:36) * Dns resolved google.com to 72.14.204.147
-


Same goes for IPv4 connections, naturally.

On an existing IPv4 connection, change your adapter settings to bind to an IPv6 only adapter (NOT priority mode) and retest:

Code:
(00:58:17) * Dns resolving google.com
-
(00:58:17) * Dns unable to resolve address google.com
-


Same thing happens even on an IPv6 connection. It will stop working when you unbind from the IPv6 only adapter.

It has nothing to do with the active connection; it has everything to do with the interface mIRC is bound to in your adapter settings.

/sockopen behaves the same way, it's just easier to show with /dns (/dns holds the underlying code that's of concern here anyway).


edit:

We are actually both right:

I initially didn't notice you used /server -6. Using -4 or -6 in /server ultimately binds your active connection to a specific adapter (the first available IPv4 or 6 adapter in the list). It is effectively a way to override the global setting with a connection local one. There is therefore both a global and local setting-- you were right about the local one, I was right about the global one. HOWEVER:

Using -6 for that connection means that IPv4 does not work in that connection. This is expected behaviour as well. /dns will not function on IPv4 addresses inside of a connection with /server -6. Again, this is expected behaviour. Because of this, it will be impossible to resolve IPv4 hosts. The issue isn't about bind ips, it's about resolving hosts. IPv4 is disabled in a connection bound to an IPv6 only adapter. /server -6 does this (local for a connection). This is by design. I'm not a huge fan of the design, but it was discussed thoroughly when the feature was introduced. Even forcing IPv4 with /dns -4 will fail to resolve a host in such a connection.

In that sense, mIRC's behaviour with /sockopen is correct (in that it is by design). In a connection that it bound to an IPv6 adapter (either globally or locally via /server -6), IPv4 will be completely and explicitly disabled. /sockopen will not resolve the host because it can't (again, by design) use IPv4 here. Therefore: you should probably not be using /server -6. It has a very specific usage.

Now, the "fix": Use PRIORITY MODE (Alt+O -> Connect -> Options -> Ports), not /server -4/-6. This mode will FALL BACK to IPv4 when 6 isn't available. /dns will continue to function. This is how *I* am able to /dns google and run your /goog script in my IPv6 connections.

Last edited by argv0; 11/02/11 10:16 AM.

- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"