diff options
author | Cy Schubert <cy@FreeBSD.org> | 2022-07-13 13:02:01 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2022-07-13 13:02:01 +0000 |
commit | d57351465531b38689892ec862de2725b52842dd (patch) | |
tree | 7363167508f031fdb90b9091c07a065f3903325d /services | |
parent | 5f9f82264b91e041df7cba2406625146e7268ce4 (diff) | |
download | src-d57351465531b38689892ec862de2725b52842dd.tar.gz src-d57351465531b38689892ec862de2725b52842dd.zip |
unbound: Vendor import 1.16.1vendor/unbound/1.16.1
Diffstat (limited to 'services')
-rw-r--r-- | services/authzone.c | 4 | ||||
-rw-r--r-- | services/mesh.c | 3 | ||||
-rw-r--r-- | services/outside_network.c | 12 | ||||
-rw-r--r-- | services/outside_network.h | 2 |
4 files changed, 17 insertions, 4 deletions
diff --git a/services/authzone.c b/services/authzone.c index 02fb621a22ff..5f2b7154a946 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3967,7 +3967,7 @@ probe_copy_masters_for_allow_notify(struct auth_xfer* xfr) struct auth_master* list = NULL, *last = NULL; struct auth_master* p; /* build up new list with copies */ - for(p = xfr->task_probe->masters; p; p=p->next) { + for(p = xfr->task_transfer->masters; p; p=p->next) { struct auth_master* m = auth_master_copy(p); if(!m) { auth_free_masters(list); @@ -5512,6 +5512,8 @@ xfr_transfer_init_fetch(struct auth_xfer* xfr, struct module_env* env) addr_to_str(&addr, addrlen, as, sizeof(as)); verbose(VERB_ALGO, "auth zone %s transfer next HTTP fetch from %s started", zname, as); } + /* Create or refresh the list of allow_notify addrs */ + probe_copy_masters_for_allow_notify(xfr); return 1; } diff --git a/services/mesh.c b/services/mesh.c index fbaa966bdd05..c40eb50dc55c 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -811,7 +811,8 @@ static void mesh_schedule_prefetch_subnet(struct mesh_area* mesh, log_err("prefetch_subnet subnet_option_from_ss: invalid data"); return; } - subnet_ecs_opt_list_append(&ecs, &s->s.edns_opts_front_in, &s->s); + subnet_ecs_opt_list_append(&ecs, &s->s.edns_opts_front_in, + &s->s, s->s.region); if(!s->s.edns_opts_front_in) { log_err("prefetch_subnet subnet_ecs_opt_list_append: out of memory"); return; diff --git a/services/outside_network.c b/services/outside_network.c index ec37a4a80d71..3f479a3a36fe 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -271,7 +271,7 @@ outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, int s; int af; char* err; -#ifdef SO_REUSEADDR +#if defined(SO_REUSEADDR) || defined(IP_BIND_ADDRESS_NO_PORT) int on = 1; #endif #ifdef INET6 @@ -317,7 +317,13 @@ outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, " setsockopt(TCP_MAXSEG) unsupported"); #endif /* defined(IPPROTO_TCP) && defined(TCP_MAXSEG) */ } - +#ifdef IP_BIND_ADDRESS_NO_PORT + if(setsockopt(s, IPPROTO_IP, IP_BIND_ADDRESS_NO_PORT, (void*)&on, + (socklen_t)sizeof(on)) < 0) { + verbose(VERB_ALGO, "outgoing tcp:" + " setsockopt(.. IP_BIND_ADDRESS_NO_PORT ..) failed"); + } +#endif /* IP_BIND_ADDRESS_NO_PORT */ return s; } @@ -1608,6 +1614,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, outnet->tcp_reuse_timeout= tcp_reuse_timeout; outnet->tcp_auth_query_timeout = tcp_auth_query_timeout; outnet->num_tcp_outgoing = 0; + outnet->num_udp_outgoing = 0; outnet->infra = infra; outnet->rnd = rnd; outnet->sslctx = sslctx; @@ -2142,6 +2149,7 @@ randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, int timeout) portcomm_loweruse(outnet, pend->pc); return 0; } + outnet->num_udp_outgoing++; /* system calls to set timeout after sending UDP to make roundtrip smaller. */ diff --git a/services/outside_network.h b/services/outside_network.h index 4c5b96f83424..c383b8f09e24 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -113,6 +113,8 @@ struct outside_network { /** if we perform udp-connect, connect() for UDP socket to mitigate * ICMP side channel leakage */ int udp_connect; + /** number of udp packets sent. */ + size_t num_udp_outgoing; /** array of outgoing IP4 interfaces */ struct port_if* ip4_ifs; |