diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2016-08-07 16:08:44 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2016-08-07 16:08:44 +0200 |
commit | eee11972f7d8964266314a09537414ad37a78ccb (patch) | |
tree | c58a9bdd21910c819dc787fa92ced1bdab30c12d | |
parent | d575d43218a0c6ab64598b5fc3278914e3544423 (diff) | |
parent | 761c5e2d112acc01bb8a779ca2678baf37ecfdf8 (diff) | |
download | weechat-eee11972f7d8964266314a09537414ad37a78ccb.zip |
Merge remote-tracking branch 'origin/pr/771'
-rw-r--r-- | src/core/wee-network.c | 9 | ||||
-rw-r--r-- | src/plugins/irc/irc-server.c | 4 | ||||
-rw-r--r-- | src/plugins/xfer/xfer.c | 3 |
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) { |