From: Azat Khuzhin Date: Thu, 12 May 2022 04:37:19 +0000 (+0300) Subject: https-client: fix connect to ipv6 address with square brackets X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=41239c9dac70ed90187fb287f214e1b106f52c83;p=libevent https-client: fix connect to ipv6 address with square brackets getaddrinfo() cannot process addresses like "[::1]", only "::1" Fixes: #1275 --- diff --git a/sample/https-client.c b/sample/https-client.c index 733655fb..85433850 100644 --- a/sample/https-client.c +++ b/sample/https-client.c @@ -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;