summaryrefslogtreecommitdiff
path: root/src/irc
diff options
context:
space:
mode:
authorLemonBoy <thatlemon@gmail.com>2015-09-21 13:54:13 +0200
committerLemonBoy <thatlemon@gmail.com>2015-09-21 14:19:35 +0200
commitffaa890e99e2176ff3d2dec0ab5a8136e1e946ff (patch)
tree8c3765d9736a0f86037b42c18fd3c1553b4a2434 /src/irc
parent0912a1105058829559529e2ae7d62daccb8337f6 (diff)
downloadirssi-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.c4
-rw-r--r--src/irc/proxy/listen.c9
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);