<div dir="ltr"><div><div>Hi,<br><br>Here's a resume of the current situation and the proposed plan to address it.<br><br>While moving from 4.0.x to 4.1 I noticed that std.ip(..., "::1") doesn't work anymore.<br>It errors out with:<br><br>IP constant '"::1"' could not be resolved to an IP address:<br>Servname not supported for ai_socktype<br>(Sorry if that error message is gibberish.)<br><br>Using [::1] works though. <br>This changed when Resolve_Sockaddr() was modified to use VSS_Resolver(), in commit d86639568e660bbf272492659f85e271145903c6.<br><br></div><div>I've opened a ticket to deal with this, <a href="https://www.varnish-cache.org/trac/ticket/1801">https://www.varnish-cache.org/trac/ticket/1801</a>.<br></div><div><br>My first problem with this is the now mandatory [].  <br>They do make sense when you need to use a port with an IPv6, in fact that's the only way, but we do accept 1.2.3.4 as literal, so why not ::1?<br>Using the [] notation for specifying an IPv6 address without a port is non-standard and something you won't find on the wild. It feels pretty much arbitrary too.<br></div><div><br>Moving on, if you were to pass [::1] as the first argument to std.ip() it won't work, since getaddrinfo() doesn't know how to parse it. <br>This is not consistent.<br><br></div><div>First, I'd like to restore the pre 4.1 behaviour with a 2 lines patch (see attached). <br>The patch is fairly small and if we parse it incorrectly it will fail down the line when we call getaddrinfo().<br><br></div></div><div><div>The other thing that I mentioned on Monday is modifying std.ip() to accept [::1] and [::1]:80 as well. <br>The former might be needed when dealing with forward like headers (rfc 7239) for example and should be trivial.<br><br></div><div>Before I proceed I'd like some consensus, time is scarce after all.<br><br></div><div>So let the bike shedding begin.<br><br></div><div>f.-<br></div><div><br></div></div></div>