Le 2015-10-10 15:49, Willy Tarreau a écrit :
Hi,

@@ -856,11 +883,28 @@ struct sockaddr_storage *str2sa_range(const char
*str, int *low, int *high, char
        else { /* IPv4 and IPv6 */
                int use_fqdn = 0;

-               port1 = strrchr(str2, ':');
-               if (port1)
-                       *port1++ = '\0';
-               else
+               /* IPv6 wildcard */
+               if (!strcmp(str2, "::")) {
+                       port1 = "";
+               }

You're changing the parser here, because it now accepts "::" in a place
where a port was expected.

May I ask : isn’t the parser just a parser ? Making the caller’s responsibility to use or not the ports returned either in the sockaddr_storage or the 2 int depending on the context ? (‘bind’ requires a port but ‘server’’s port is optional)
Is str2sa_range aware of the context it’s called ?

Regards,
Mildis

Reply via email to