[git] GnuPG - branch, master, updated. gnupg-2.1.16-147-ge77b924
by Werner Koch
cvs at cvs.gnupg.org
Sat Dec 17 21:59:55 CET 2016
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU Privacy Guard".
The branch, master has been updated
via e77b924fec1082faae48cdd2ff8474874a22bdf7 (commit)
from c3c60843ea25213a1a6cbfd26e79b717ff2c2a60 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit e77b924fec1082faae48cdd2ff8474874a22bdf7
Author: Werner Koch <wk at gnupg.org>
Date: Sat Dec 17 21:54:45 2016 +0100
dirmngr: Fix setup of libdns for W32.
* configure.ac (DNSLIB) {W32]: Add -liphlpapi.
* dirmngr/dns-stuff.c [W32]: Include iphlpapi.h and define
WIN32_LEAN_AND_MEAN.
(libdns_init) [W32]: Use GetNetworkParams to get the nameserver.
* dirmngr/t-dns-stuff.c (init_sockets): New.
(main): Call it.
Signed-off-by: Werner Koch <wk at gnupg.org>
diff --git a/configure.ac b/configure.ac
index 1c467bf..6630610 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1088,6 +1088,12 @@ if test "$build_dirmngr" = "yes"; then
show_tor_support="${show_tor_support} (no system resolver)"
fi
+ if test "$have_w32_system" = yes; then
+ if test "$use_libdns" = yes; then
+ DNSLIBS="$DNSLIBS -liphlpapi"
+ fi
+ fi
+
LIBS=$_dns_save_libs
fi
diff --git a/dirmngr/dns-stuff.c b/dirmngr/dns-stuff.c
index 1fc81b2..eae674f 100644
--- a/dirmngr/dns-stuff.c
+++ b/dirmngr/dns-stuff.c
@@ -31,10 +31,12 @@
#include <config.h>
#include <sys/types.h>
#ifdef HAVE_W32_SYSTEM
+# define WIN32_LEAN_AND_MEAN
# ifdef HAVE_WINSOCK2_H
# include <winsock2.h>
# endif
# include <windows.h>
+# include <iphlpapi.h>
#else
# if HAVE_SYSTEM_RESOLVER
# include <netinet/in.h>
@@ -46,6 +48,7 @@
#include <string.h>
#include <unistd.h>
+
/* William Ahern's DNS library, included as a source copy. */
#ifdef USE_LIBDNS
# include "dns.h"
@@ -229,6 +232,8 @@ free_dns_addrinfo (dns_addrinfo_t ai)
}
}
+
+#ifndef HAVE_W32_SYSTEM
/* Return H_ERRNO mapped to a gpg-error code. Will never return 0. */
static gpg_error_t
get_h_errno_as_gpg_error (void)
@@ -245,7 +250,7 @@ get_h_errno_as_gpg_error (void)
}
return gpg_error (ec);
}
-
+#endif /*!HAVE_W32_SYSTEM*/
static gpg_error_t
map_eai_to_gpg_error (int ec)
@@ -323,7 +328,6 @@ libdns_init (void)
gpg_error_t err;
struct libdns_s ld;
int derr;
- const char *fname;
char *cfgstr = NULL;
if (libdns.resolv_conf)
@@ -378,6 +382,47 @@ libdns_init (void)
}
else
{
+#ifdef HAVE_W32_SYSTEM
+ ULONG ninfo_len;
+ PFIXED_INFO ninfo;
+ PIP_ADDR_STRING pip;
+ int idx;
+
+ ninfo_len = 2048;
+ ninfo = xtrymalloc (ninfo_len);
+ if (!ninfo)
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+
+ if (GetNetworkParams (ninfo, &ninfo_len))
+ {
+ log_error ("GetNetworkParms failed: %s\n", w32_strerror (-1));
+ err = gpg_error (GPG_ERR_GENERAL);
+ xfree (ninfo);
+ goto leave;
+ }
+
+ for (idx=0, pip = &(ninfo->DnsServerList);
+ pip && idx < DIM (ld.resolv_conf->nameserver);
+ pip = pip->Next)
+ {
+ log_debug ("ninfo->dnsserver[%d] '%s'\n", idx, pip->IpAddress.String);
+ err = libdns_error_to_gpg_error
+ (dns_resconf_pton (&ld.resolv_conf->nameserver[idx],
+ pip->IpAddress.String));
+ if (err)
+ log_error ("failed to set nameserver[%d] '%s': %s\n",
+ idx, pip->IpAddress.String, gpg_strerror (err));
+ else
+ idx++;
+ }
+ xfree (ninfo);
+
+#else /* Unix */
+ const char *fname;
+
fname = "/etc/resolv.conf";
err = libdns_error_to_gpg_error
(dns_resconf_loadpath (ld.resolv_conf, fname));
@@ -395,6 +440,8 @@ libdns_init (void)
log_error ("failed to load '%s': %s\n", fname, gpg_strerror (err));
goto leave;
}
+
+#endif /* Unix */
}
ld.hosts = dns_hosts_open (&derr);
diff --git a/dirmngr/t-dns-stuff.c b/dirmngr/t-dns-stuff.c
index 5315138..dd8e21e 100644
--- a/dirmngr/t-dns-stuff.c
+++ b/dirmngr/t-dns-stuff.c
@@ -33,6 +33,16 @@ static int verbose;
static int debug;
+static void
+init_sockets (void)
+{
+#ifdef HAVE_W32_SYSTEM
+ WSADATA wsadat;
+
+ WSAStartup (0x202, &wsadat);
+#endif
+}
+
int
main (int argc, char **argv)
@@ -147,6 +157,8 @@ main (int argc, char **argv)
exit (1);
}
+ init_sockets ();
+
if (opt_tor)
{
err = enable_dns_tormode (opt_new_circuit);
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 6 ++++++
dirmngr/dns-stuff.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
dirmngr/t-dns-stuff.c | 12 ++++++++++++
3 files changed, 67 insertions(+), 2 deletions(-)
hooks/post-receive
--
The GNU Privacy Guard
http://git.gnupg.org
More information about the Gnupg-commits
mailing list