summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2016-08-07 16:08:44 +0200
committerSébastien Helleu <flashcode@flashtux.org>2016-08-07 16:08:44 +0200
commiteee11972f7d8964266314a09537414ad37a78ccb (patch)
treec58a9bdd21910c819dc787fa92ced1bdab30c12d
parentd575d43218a0c6ab64598b5fc3278914e3544423 (diff)
parent761c5e2d112acc01bb8a779ca2678baf37ecfdf8 (diff)
downloadweechat-eee11972f7d8964266314a09537414ad37a78ccb.zip
Merge remote-tracking branch 'origin/pr/771'
-rw-r--r--src/core/wee-network.c9
-rw-r--r--src/plugins/irc/irc-server.c4
-rw-r--r--src/plugins/xfer/xfer.c3
3 files changed, 14 insertions, 2 deletions
diff --git a/src/core/wee-network.c b/src/core/wee-network.c
index cb2fa52d2..f4b9c2540 100644
--- a/src/core/wee-network.c
+++ b/src/core/wee-network.c
@@ -43,6 +43,7 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
+#include <resolv.h>
#include <errno.h>
#include <gcrypt.h>
#include <sys/time.h>
@@ -311,6 +312,9 @@ network_resolve (const char *hostname, char *ip, int *version)
res = NULL;
+ if (res_init() != 0)
+ return 0;
+
if (getaddrinfo (hostname, NULL, NULL, &res) != 0)
return 0;
@@ -696,6 +700,8 @@ network_connect_to (const char *proxy, struct sockaddr *address,
hints.ai_flags = AI_NUMERICSERV;
snprintf (str_port, sizeof (str_port), "%d",
CONFIG_INTEGER(ptr_proxy->options[PROXY_OPTION_PORT]));
+ if (res_init() != 0)
+ goto error;
if (getaddrinfo (CONFIG_STRING(ptr_proxy->options[PROXY_OPTION_ADDRESS]),
str_port, &hints, &proxy_addrinfo) != 0)
{
@@ -806,7 +812,8 @@ network_connect_child (struct t_hook *hook_connect)
#ifdef AI_ADDRCONFIG
hints.ai_flags = AI_ADDRCONFIG;
#endif /* AI_ADDRCONFIG */
- if (ptr_proxy)
+ rc = res_init();
+ if (!rc && ptr_proxy)
{
hints.ai_family = (CONFIG_BOOLEAN(ptr_proxy->options[PROXY_OPTION_IPV6])) ?
AF_UNSPEC : AF_INET;
diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c
index 0f35155ba..a2ec91220 100644
--- a/src/plugins/irc/irc-server.c
+++ b/src/plugins/irc/irc-server.c
@@ -38,6 +38,7 @@
#endif /* _WIN32 */
#include <sys/types.h>
#include <netdb.h>
+#include <resolv.h>
#include <arpa/inet.h>
#include <netinet/in.h>
@@ -5132,7 +5133,8 @@ irc_server_xfer_send_ready_cb (const void *pointer, void *data,
"local_address");
if (local_address)
{
- rc = getaddrinfo (local_address, NULL, NULL, &ainfo);
+ if ((rc = res_init()) == 0)
+ rc = getaddrinfo (local_address, NULL, NULL, &ainfo);
if ((rc == 0) && ainfo && ainfo->ai_addr)
{
if (ainfo->ai_family == AF_INET)
diff --git a/src/plugins/xfer/xfer.c b/src/plugins/xfer/xfer.c
index 25b855124..d01b457b9 100644
--- a/src/plugins/xfer/xfer.c
+++ b/src/plugins/xfer/xfer.c
@@ -30,6 +30,7 @@
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
+#include <resolv.h>
#include <gcrypt.h>
#include <arpa/inet.h>
@@ -966,6 +967,8 @@ xfer_resolve_addr (const char *str_address, const char *str_port,
hints.ai_addr = NULL;
hints.ai_next = NULL;
+ if (res_init() != 0)
+ return 0;
rc = getaddrinfo (str_address, str_port, &hints, &ainfo);
if ((rc == 0) && ainfo && ainfo->ai_addr)
{