diff --git a/CHANGES b/CHANGES index 9112d2eca..521480d90 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,8 @@ Changelog Daniel (9 March 2007) +- Robert Iakobashvili fixed CURLOPT_INTERFACE for IPv6. + - Robert A. Monat improved the maketgz and VC6/8 generating to set the correct machine type too. diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 636a0d91b..d19a6af53 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -38,6 +38,7 @@ This release includes the following bugfixes: used o HTTP Digest header parsing fix for unquoted last word ending with CRLF o CURLOPT_PORT, HTTP proxy, re-using connections and non-HTTP protocols + o CURLOPT_INTERFACE for ipv6 This release includes the following known bugs: @@ -58,6 +59,7 @@ advice from friends like these: Yang Tse, Manfred Schwarb, Michael Wallner, Jeff Pohlmeyer, Shmulik Regev, Rob Crittenden, Robert A. Monat, Dan Fandrich, Duncan Mac-Vicar Prett, Michal Marek, Robson Braga Araujo, Ian Turner, Linus Nielsen Feltzing, - Ravi Pratap, Adam D. Moss, Jose Kahan, Hang Kin Lau, Justin Fletcher + Ravi Pratap, Adam D. Moss, Jose Kahan, Hang Kin Lau, Justin Fletcher, + Robert Iakobashvili Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/connect.c b/lib/connect.c index a18a335af..d98569fce 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -233,7 +233,9 @@ static CURLcode bindlocal(struct connectdata *conn, char myhost[256] = ""; in_addr_t in; int rc; + char ipv6_addr[16]; bool was_iface = FALSE; + int in6 = -1; /* First check if the given name is an IP address */ in=inet_addr(data->set.device); @@ -314,7 +316,11 @@ static CURLcode bindlocal(struct connectdata *conn, #endif in=inet_addr(myhost); - if (CURL_INADDR_NONE == in) { + +#ifdef ENABLE_IPV6 + in6 = inet_pton (AF_INET6, myhost, (void *)&ipv6_addr); +#endif + if (CURL_INADDR_NONE == in && -1 == in6) { failf(data,"couldn't find my own IP address (%s)", myhost); return CURLE_HTTP_PORT_FAILED; } /* end of inet_addr */