mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-30 11:29:35 -05:00
Fix #928 (1.18 doesn't start on macOS/SunOS)
This commit is contained in:
parent
8c751d48a2
commit
17a557dfd5
3 changed files with 11 additions and 9 deletions
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -850,10 +850,10 @@ done:
|
|||
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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue