commit e6bd3e8b0ad99208c704b8e999dee9fd60267214 author: dldmitry date: 2016-07-04T12:23:34+03:00 revision: 2387435 libevent: use ipv6 if possible in http client __BYPASS_CHECKS__ --- libevent/bufferevent_sock.c (index) +++ libevent/bufferevent_sock.c (working tree) @@ -482,8 +482,12 @@ bufferevent_connect_getaddrinfo_cb(int result, struct evutil_addrinfo *ai, } /* XXX use the other addrinfos? */ - bufferevent_socket_set_conn_address_(bev, ai->ai_addr, (int)ai->ai_addrlen); - r = bufferevent_socket_connect(bev, ai->ai_addr, (int)ai->ai_addrlen); + struct evutil_addrinfo *found_ai = ai; + while (found_ai->ai_addr->sa_family != AF_INET6 && found_ai->ai_next != NULL) { + found_ai = found_ai->ai_next; + } + bufferevent_socket_set_conn_address_(bev, found_ai->ai_addr, (int)found_ai->ai_addrlen); + r = bufferevent_socket_connect(bev, found_ai->ai_addr, (int)found_ai->ai_addrlen); if (r < 0) bufferevent_run_eventcb_(bev, BEV_EVENT_ERROR, 0); bufferevent_decref_and_unlock_(bev);