Skip to content

Commit

Permalink
unbound: add upstream startup fix, regen patch
Browse files Browse the repository at this point in the history
  • Loading branch information
danielluke committed Sep 11, 2023
1 parent 09a6c58 commit 810722f
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 4 deletions.
6 changes: 4 additions & 2 deletions net/unbound/Portfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ PortGroup compiler_blacklist_versions 1.0

name unbound
version 1.18.0
revision 0
revision 1

categories net
license BSD
Expand Down Expand Up @@ -40,8 +40,10 @@ checksums rmd160 4e77b7087c0c11cfe96d6963bd89ff040c137c43 \
sha256 3da95490a85cff6420f26fae0b84a49f5112df1bf1b7fc34f8724f02082cb712 \
size 6315297

# add fix for https://github.com/Homebrew/homebrew-core/pull/141705
# add missing definition for older systems
patchfiles-append patch-dnsport-ipv6tclass.diff
patchfiles-append patch-macos_startup_fix.diff \
patch-dnsport-ipv6tclass.diff

configure.args-append --with-pidfile=${prefix}/var/run/${name}/${name}.pid \
--with-ssl=${prefix} \
Expand Down
4 changes: 2 additions & 2 deletions net/unbound/files/patch-dnsport-ipv6tclass.diff
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
--- services/listen_dnsport.c.orig 2023-08-30 04:01:13
+++ services/listen_dnsport.c 2023-09-05 09:53:07
--- services/listen_dnsport.c.orig 2023-09-11 16:59:19
+++ services/listen_dnsport.c 2023-09-11 16:59:37
@@ -82,6 +82,11 @@
#ifdef HAVE_LINUX_NET_TSTAMP_H
#include <linux/net_tstamp.h>
Expand Down
100 changes: 100 additions & 0 deletions net/unbound/files/patch-macos_startup_fix.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
From 17a557dfd5eadb8f0b812d25cea28deccaa62de9 Mon Sep 17 00:00:00 2001
From: Philip Homburg <philip@nlnetlabs.nl>
Date: Thu, 7 Sep 2023 15:35:32 +0200
Subject: [PATCH] Fix #928 (1.18 doesn't start on macOS/SunOS)

---
services/listen_dnsport.c | 4 ++++
util/fptr_wlist.c | 2 ++
util/netevent.c | 14 +++++---------
3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c
index 60f9b41e5..259347a36 100644
--- services/listen_dnsport.c
+++ services/listen_dnsport.c
@@ -1498,9 +1498,13 @@ listen_create(struct comm_base* base, struct listen_port* ports,
}
} else if(ports->ftype == listen_type_udpancil ||
ports->ftype == listen_type_udpancil_dnscrypt) {
+#if defined(AF_INET6) && defined(IPV6_PKTINFO) && defined(HAVE_RECVMSG)
cp = comm_point_create_udp_ancil(base, ports->fd,
front->udp_buff, ports->pp2_enabled, cb,
cb_arg, ports->socket);
+#else
+ log_warn("This system does not support UDP ancilliary data.");
+#endif
}
if(!cp) {
log_err("can't create commpoint");
diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c
index 3b88da235..43d38dc37 100644
--- util/fptr_wlist.c
+++ util/fptr_wlist.c
@@ -168,7 +168,9 @@ int
fptr_whitelist_event(void (*fptr)(int, short, void *))
{
if(fptr == &comm_point_udp_callback) return 1;
+#if defined(AF_INET6) && defined(IPV6_PKTINFO) && defined(HAVE_RECVMSG)
else if(fptr == &comm_point_udp_ancil_callback) return 1;
+#endif
else if(fptr == &comm_point_tcp_accept_callback) return 1;
else if(fptr == &comm_point_tcp_handle_callback) return 1;
else if(fptr == &comm_timer_callback) return 1;
diff --git a/util/netevent.c b/util/netevent.c
index 204e4883c..9f4a6e6c3 100644
--- util/netevent.c
+++ util/netevent.c
@@ -850,10 +850,10 @@ static int consume_pp2_header(struct sldns_buffer* buf, struct comm_reply* rep,
return 1;
}

+#if defined(AF_INET6) && defined(IPV6_PKTINFO) && defined(HAVE_RECVMSG)
void
comm_point_udp_ancil_callback(int fd, short event, void* arg)
{
-#if defined(AF_INET6) && defined(IPV6_PKTINFO) && defined(HAVE_RECVMSG)
struct comm_reply rep;
struct msghdr msg;
struct iovec iov[1];
@@ -972,14 +972,8 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg)
if(!rep.c || rep.c->fd == -1) /* commpoint closed */
break;
}
-#else
- (void)fd;
- (void)event;
- (void)arg;
- fatal_exit("recvmsg: No support for IPV6_PKTINFO; IP_PKTINFO or IP_RECVDSTADDR. "
- "Please disable interface-automatic");
-#endif /* AF_INET6 && IPV6_PKTINFO && HAVE_RECVMSG */
}
+#endif /* AF_INET6 && IPV6_PKTINFO && HAVE_RECVMSG */

void
comm_point_udp_callback(int fd, short event, void* arg)
@@ -3860,7 +3854,7 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer,
evbits = UB_EV_READ | UB_EV_PERSIST;
/* ub_event stuff */
c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits,
-#ifdef USE_WINSOCK
+#if defined(USE_WINSOCK) || !(defined(AF_INET6) && defined(IPV6_PKTINFO) && defined(HAVE_RECVMSG))
comm_point_udp_callback, c);
#else
comm_point_udp_ancil_callback, c);
@@ -3879,6 +3873,7 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer,
return c;
}

+#if defined(AF_INET6) && defined(IPV6_PKTINFO) && defined(HAVE_RECVMSG)
struct comm_point*
comm_point_create_udp_ancil(struct comm_base *base, int fd,
sldns_buffer* buffer, int pp2_enabled,
@@ -3941,6 +3936,7 @@ comm_point_create_udp_ancil(struct comm_base *base, int fd,
c->event_added = 1;
return c;
}
+#endif

static struct comm_point*
comm_point_create_tcp_handler(struct comm_base *base,

0 comments on commit 810722f

Please sign in to comment.