12345678910111213141516171819202122232425 |
- 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);
|