diff options
author | LemonBoy <thatlemon@gmail.com> | 2015-09-21 13:54:13 +0200 |
---|---|---|
committer | LemonBoy <thatlemon@gmail.com> | 2015-09-21 14:19:35 +0200 |
commit | ffaa890e99e2176ff3d2dec0ab5a8136e1e946ff (patch) | |
tree | 8c3765d9736a0f86037b42c18fd3c1553b4a2434 /src/irc | |
parent | 0912a1105058829559529e2ae7d62daccb8337f6 (diff) | |
download | irssi-ffaa890e99e2176ff3d2dec0ab5a8136e1e946ff.zip |
Initial work to make irssi respect the resolved ip order
Ip's aren't selected using random() anymore, also select the ip version
by using getaddrinfo and some proper hints.
Diffstat (limited to 'src/irc')
-rw-r--r-- | src/irc/dcc/dcc.c | 4 | ||||
-rw-r--r-- | src/irc/proxy/listen.c | 9 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/irc/dcc/dcc.c b/src/irc/dcc/dcc.c index 17f6c477..7fef2ae5 100644 --- a/src/irc/dcc/dcc.c +++ b/src/irc/dcc/dcc.c @@ -264,12 +264,12 @@ GIOChannel *dcc_connect_ip(IPADDR *ip, int port) } if (own_ip == NULL) - own_ip = IPADDR_IS_V6(ip) ? source_host_ip6 : source_host_ip4; + own_ip = &source_host_ip; handle = net_connect_ip(ip, port, own_ip); if (handle == NULL && errno == EADDRNOTAVAIL && own_ip != NULL) { /* dcc_own_ip is external address */ - own_ip = IPADDR_IS_V6(ip) ? source_host_ip6 : source_host_ip4; + own_ip = &source_host_ip; handle = net_connect_ip(ip, port, own_ip); } return handle; diff --git a/src/irc/proxy/listen.c b/src/irc/proxy/listen.c index dcc94e6b..16950c79 100644 --- a/src/irc/proxy/listen.c +++ b/src/irc/proxy/listen.c @@ -585,7 +585,7 @@ static LISTEN_REC *find_listen(const char *ircnet, int port) static void add_listen(const char *ircnet, int port) { LISTEN_REC *rec; - IPADDR ip4, ip6, *my_ip; + IPADDR ip, *my_ip; if (port <= 0 || *ircnet == '\0') return; @@ -593,16 +593,13 @@ static void add_listen(const char *ircnet, int port) /* bind to specific host/ip? */ my_ip = NULL; if (*settings_get_str("irssiproxy_bind") != '\0') { - if (net_gethostbyname(settings_get_str("irssiproxy_bind"), - &ip4, &ip6) != 0) { + if (net_gethostbyname(settings_get_str("irssiproxy_bind"), &ip) != 0) { printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Proxy: can not resolve '%s' - aborting", settings_get_str("irssiproxy_bind")); return; } - - my_ip = ip6.family == 0 ? &ip4 : ip4.family == 0 || - settings_get_bool("resolve_prefer_ipv6") ? &ip6 : &ip4; + my_ip = &ip; } rec = g_new0(LISTEN_REC, 1); |