davygrvy Posted November 29, 2008 Report Posted November 29, 2008 uTorrent is 1.8.1 build 12642OS is Win2000 sp4 with the ipv6 preview patch (yes, it's old)If the tracker is http://ipv6.torrent.ubuntu.com:6969/announce, the trackers tab reports its status as 'hostname not found'. But if I do a manual lookup with: "nslookup -type=AAAA ipv6.torrent.ubuntu.com" and replace the hostname with the address directly (http://[2001:7b8:3:37:0:0:21:2]:6969/announce) it all works.I bet there's a difference with getaddrinfo() and getnameinfo() with ipv6 preview patch that uT is exercising.Although uT works fine on my XP computer doing the forward lookup of the above example, uT doesn't reverse resolve v6 addresses either.I posted this in the troubleshooting forum, but didn't get much traction there.
thelittlefire Posted November 29, 2008 Report Posted November 29, 2008 ... Alt-H-A again. There is no 12642. Where did you download uTorrent.exe from?
Firon Posted November 29, 2008 Report Posted November 29, 2008 We don't support IPv6 on 2000. Reposting your issue here is not going to make us support it.as for reverse lookups, they should work if the address actually has a PTR record. Try 1.8.1 and 1.9.
davygrvy Posted November 29, 2008 Author Report Posted November 29, 2008 I can get getaddrinfo() and getnameinfo() on win2k with the ipv6 preview patch to work fine. Why can't you? There is a bug in wship6.dll, but you can fix it with a hex editor. After I did, uT didn't start reverse resolving. ping6 did, though. Had to do with RFC3152 support.As for the build # see http://forum.utorrent.com/viewtopic.php?pid=368608#p368608So why doesn't uT reverse resolve v6 addies on XP?
thelittlefire Posted November 29, 2008 Report Posted November 29, 2008 .. custom-builds, yayIf they say it doesn't work, don't expect it to. Have you tried 1.9 with these same things? Check the Announcements forum.
davygrvy Posted November 29, 2008 Author Report Posted November 29, 2008 1.9 build 13485 has the same not working behavior on Win2k fore and back are both broke. I'll test reverse v6 on XP on Monday.Here's a code sample how to do lookups: isIpRE_IPv4 = Tcl_NewStringObj("^((25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3})$", -1); Tcl_IncrRefCount(isIpRE_IPv4); isIpRE_IPv6 = Tcl_NewStringObj("^((?:[[:xdigit:]]{1,4}{7}[[:xdigit:]]{1,4})$", -1); Tcl_IncrRefCount(isIpRE_IPv6); isIpRE_IPv6Comp = Tcl_NewStringObj("^((?:[[:xdigit:]]{1,4}(?::[[:xdigit:]]{1,4})*)?):(?:[[:xdigit:]]{1,4}(?::[[:xdigit:]]{1,4})*)?)$", -1); Tcl_IncrRefCount(isIpRE_IPv6Comp); isIpRE_4in6 = Tcl_NewStringObj("^(((?:[[:xdigit:]]{1,4}{6,6})(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3})$", -1); Tcl_IncrRefCount(isIpRE_4in6); isIpRE_4in6Comp = Tcl_NewStringObj("^(((?:[[:xdigit:]]{1,4}(?::[[:xdigit:]]{1,4})*)?):(?:[[:xdigit:]]{1,4}*)(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3})$", -1); Tcl_IncrRefCount(isIpRE_4in6Comp);intisIp (Tcl_Obj *name){ int a, b, c, d, e; a = Tcl_RegExpMatchObj(NULL, name, isIpRE_IPv4); b = Tcl_RegExpMatchObj(NULL, name, isIpRE_IPv6); c = Tcl_RegExpMatchObj(NULL, name, isIpRE_IPv6Comp); d = Tcl_RegExpMatchObj(NULL, name, isIpRE_4in6); e = Tcl_RegExpMatchObj(NULL, name, isIpRE_4in6Comp); if (a || b || c || d || e) { return 1; } return 0;}use AF_UNSPEC for addressFamily if you want both/either AF_INET and AF_INET6.voidDo_IP_Work (int addressFamily, Tcl_Obj *question){ struct addrinfo hints; struct addrinfo *hostaddr, *addr; int result, type, len; CONST char *utf8Chars; Tcl_Obj *answers; Tcl_DString dnsTxt; Tcl_Encoding dnsEnc; memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_flags = 0; hints.ai_family = addressFamily; hints.ai_socktype = 0; hints.ai_protocol = 0; /* * See: ftp://ftp.rfc-editor.org/in-notes/rfc3490.txt */ dnsEnc = Tcl_GetEncoding(NULL, "ascii"); Tcl_DStringInit(&dnsTxt); utf8Chars = Tcl_GetStringFromObj(question, &len); Tcl_UtfToExternalDString(dnsEnc, utf8Chars, len, &dnsTxt); if ((result = getaddrinfo(Tcl_DStringValue(&dnsTxt), NULL, &hints, &hostaddr)) != 0) {#ifdef __WIN32__ Tcl_DStringAppend(&dnsTxt, " failed to resolve.", -1); SendWinErrorData(405, Tcl_DStringValue(&dnsTxt), WSAGetLastError());#else /* TODO */#endif goto error1; } answers = Tcl_NewObj(); if (isIp(question)) { /* question was a numeric IP, return a hostname. */ type = NI_NAMEREQD; } else { /* question was a hostname, return a numeric IP. */ type = NI_NUMERICHOST; } addr = hostaddr; while (addr != NULL) { char hostStr[NI_MAXHOST]; int err; err = getnameinfo(addr->ai_addr, addr->ai_addrlen, hostStr, NI_MAXHOST, NULL, 0, type); if (err == 0) { Tcl_ExternalToUtfDString(dnsEnc, hostStr, -1, &dnsTxt); Tcl_ListObjAppendElement(NULL, answers, Tcl_NewStringObj(Tcl_DStringValue(&dnsTxt), Tcl_DStringLength(&dnsTxt))); } else {#ifdef __WIN32__ SendWinErrorData(406, "lookup failed on getnameinfo()", WSAGetLastError());#else /* TODO */#endif goto error2; } addr = addr->ai_next; } /* reply with answers */ SendAnswers(question, answers);error2: freeaddrinfo(hostaddr);error1: Tcl_DStringFree(&dnsTxt); return;}Firon, Here's an example of an ipv6 host that does have a PTR record, but uT on XP does not reverse resolve:C:\Documents and Settings\davygrvy>nslookup -type=aaaa davygrvy-pt.tunnel.tserv3.fmt2.ipv6.he.netServer: cns.sanjose.ca.sanfran.comcast.netAddress: 68.87.76.178Non-authoritative answer:davygrvy-pt.tunnel.tserv3.fmt2.ipv6.he.net AAAA IPv6 address = 2001:470:1f04:ed:0:0:0:2C:\Documents and Settings\davygrvy>nslookup -type=ptr 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.e.0.0.4.0.f.1.0.7.4.0.1.0.0.2.ip6.arpaServer: cns.sanjose.ca.sanfran.comcast.netAddress: 68.87.76.178Non-authoritative answer:2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.e.0.0.4.0.f.1.0.7.4.0.1.0.0.2.ip6.arpaname = davygrvy-pt.tunnel.tserv3.fmt2.ipv6.he.netC:\Documents and Settings\davygrvy>
Recommended Posts
Archived
This topic is now archived and is closed to further replies.