aboutsummaryrefslogtreecommitdiffstats
path: root/dirmngr/dns.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2018-06-19 23:59:05 +0000
committerNIIBE Yutaka <[email protected]>2018-06-20 00:14:02 +0000
commit72a35ffee022f1bf180d02250c5be6a4edb599e7 (patch)
tree3a21127f7fd3e3dea5a395aa7134d801773de968 /dirmngr/dns.c
parentlibdns: Fix for non-FQDN hostname. (diff)
downloadgnupg-72a35ffee022f1bf180d02250c5be6a4edb599e7.tar.gz
gnupg-72a35ffee022f1bf180d02250c5be6a4edb599e7.zip
libdns: Let kernel to decide the local port.
* dirmngr/dns.c (LEAVE_SELECTION_OF_PORT_TO_KERNEL): New. (dns_socket): Don't select ephemeral port in user space. -- Cherry picked from master commit: 861f1da0731bf29dcb9221c4f22c76b40ec15a78 There is no good reason to bind local port aggressively. It might be some reason to do so, then, a user can specify it in /etc/resolv.conf by the second argument of "interface" directive. At least, it causes a problem on Windows. Binding a specified port in user space can trigger the Firewall dialog on Windows. Since it can be considered valid question, it is better not to bind with an ephemeral port which is selected in user space, by default. GnuPG-bug-id: 3610 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'dirmngr/dns.c')
-rw-r--r--dirmngr/dns.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/dirmngr/dns.c b/dirmngr/dns.c
index 908bf157a..f82ed26cf 100644
--- a/dirmngr/dns.c
+++ b/dirmngr/dns.c
@@ -7121,6 +7121,8 @@ static int dns_socket(struct sockaddr *local, int type, int *error_) {
if (type != SOCK_DGRAM)
return fd;
+#define LEAVE_SELECTION_OF_PORT_TO_KERNEL
+#if !defined(LEAVE_SELECTION_OF_PORT_TO_KERNEL)
/*
* FreeBSD, Linux, OpenBSD, OS X, and Solaris use random ports by
* default. Though the ephemeral range is quite small on OS X
@@ -7146,6 +7148,7 @@ static int dns_socket(struct sockaddr *local, int type, int *error_) {
/* NB: continue to next bind statement */
}
+#endif
if (0 == bind(fd, local, dns_sa_len(local)))
return fd;