diff --git a/lib/url.c b/lib/url.c index f991ade5c..945d4e327 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2574,7 +2574,15 @@ static bool check_noproxy(const char *name, const char *no_proxy) /* NO_PROXY was specified and it wasn't just an asterisk */ no_proxy_len = strlen(no_proxy); - endptr = strchr(name, ':'); + if(name[0] == '[') { + /* IPv6 numerical address */ + endptr = strchr(name, ']'); + if(!endptr) + return FALSE; + name++; + } + else + endptr = strchr(name, ':'); if(endptr) namelen = endptr - name; else diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc index 55abec873..e28066fcd 100644 --- a/tests/data/Makefile.inc +++ b/tests/data/Makefile.inc @@ -135,7 +135,7 @@ test1228 test1229 test1230 test1231 test1232 test1233 test1234 test1235 \ test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \ test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \ test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \ -test1260 test1261 test1262 test1263 test1264 \ +test1260 test1261 test1262 test1263 test1264 test1265 \ \ test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \ test1288 test1289 test1290 test1291 \ diff --git a/tests/data/test1265 b/tests/data/test1265 new file mode 100644 index 000000000..5d3ef6dc8 --- /dev/null +++ b/tests/data/test1265 @@ -0,0 +1,53 @@ + + + +HTTP +HTTP proxy +NO_PROXY +noproxy + + + +# Server-side + + +HTTP/1.1 200 OK +Date: Thu, 09 Nov 2010 14:49:00 GMT +Server: test-server/fake +Content-Length: 4 +Content-Type: text/html + +foo + + + +# Client-side + + +http-ipv6 + + +NO_PROXY with IPv6 numerical address + + +http_proxy=http://%HOSTIP:%HTTPPORT +NO_PROXY=::1 + + +http://%HOST6IP:%HTTP6PORT/1265 + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +GET /1265 HTTP/1.1 +Host: %HOST6IP:%HTTP6PORT +Accept: */* + + + +