]> granicus.if.org Git - libevent/commitdiff
https-client: fix connect to ipv6 address with square brackets
authorAzat Khuzhin <azat@libevent.org>
Thu, 12 May 2022 04:37:19 +0000 (07:37 +0300)
committerAzat Khuzhin <azat@libevent.org>
Thu, 12 May 2022 04:37:19 +0000 (07:37 +0300)
getaddrinfo() cannot process addresses like "[::1]", only "::1"

Fixes: #1275
sample/https-client.c

index 733655fbb3a04f1be3e7feba2b22cf9ec230bd1d..85433850e84cb7290fe762e225ed70c57aabefb1 100644 (file)
@@ -541,8 +541,18 @@ main(int argc, char **argv)
 
        // For simplicity, we let DNS resolution block. Everything else should be
        // asynchronous though.
-       evcon = evhttp_connection_base_bufferevent_new(base, NULL, bev,
-               host, port);
+       {
+               if (host[0] == '[' && strlen(host) > 2 && ipv6) {
+                       // trim '[' and ']'
+                       char *host_ipv6 = strndup(&host[1], strlen(&host[1]) - 1);
+                       evcon = evhttp_connection_base_bufferevent_new(base, NULL, bev,
+                               host_ipv6, port);
+                       free(host_ipv6);
+               } else {
+                       evcon = evhttp_connection_base_bufferevent_new(base, NULL, bev,
+                               host, port);
+               }
+       }
        if (evcon == NULL) {
                fprintf(stderr, "evhttp_connection_base_bufferevent_new() failed\n");
                goto error;