From e1f38f9b6885691bf26c8eb825e4863549a52765 Mon Sep 17 00:00:00 2001 From: deep-42-thought Date: Fri, 19 Jan 2018 15:06:27 +0100 Subject: [PATCH] enable irc to use ipv6 if host can't be reached via ipv4 (#380) --- src/irc.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/irc.cc b/src/irc.cc index a4fbf51d..6e99790c 100644 --- a/src/irc.cc +++ b/src/irc.cc @@ -157,8 +157,20 @@ void *ircclient(void *ptr) { } else { port = IRCPORT; } - if(irc_connect(ircobj->session, server, port, IRCSERVERPASS, IRCNICK, IRCUSER, IRCREAL) != 0) { - NORM_ERR("irc: %s", irc_strerror(irc_errno(ircobj->session))); + int err = irc_connect(ircobj->session, server, port, IRCSERVERPASS, IRCNICK, IRCUSER, IRCREAL); + if(err != 0) { + err = irc_errno(ircobj->session); + } +#ifdef BUILD_IPV6 + if(err == LIBIRC_ERR_RESOLV) { + err = irc_connect6(ircobj->session, server, port, IRCSERVERPASS, IRCNICK, IRCUSER, IRCREAL); + if(err != 0) { + err = irc_errno(ircobj->session); + } + } +#endif /* BUILD_IPV6 */ + if(err != 0) { + NORM_ERR("irc: %s", irc_strerror(err)); } if(irc_run(ircobj->session) != 0) { int ircerror = irc_errno(ircobj->session);