diff --git a/lib/isc/netmgr/udp.c b/lib/isc/netmgr/udp.c index 823d01b5c1..a79855b490 100644 --- a/lib/isc/netmgr/udp.c +++ b/lib/isc/netmgr/udp.c @@ -339,7 +339,7 @@ udp_recv_cb(uv_udp_t *handle, ssize_t nrecv, const uv_buf_t *buf, /* * isc__nm_udp_send sends buf to a peer on a socket. * It tries to find a proper sibling/child socket so that we won't have - * to jump to other thread. + * to jump to another thread. */ isc_result_t isc__nm_udp_send(isc_nmhandle_t *handle, isc_region_t *region, isc_nm_cb_t cb, @@ -380,10 +380,9 @@ isc__nm_udp_send(isc_nmhandle_t *handle, isc_region_t *region, isc_nm_cb_t cb, } /* - * If we're in netthread - send it directly - * If the original packet was received over a regular socket - * - send it over the same thread (assuming cpu affinity) - * Otherwise - use a random thread. + * If we're in the network thread, we can send directly. If the + * handle is associated with a UDP socket, we can reuse its thread + * (assuming CPU affinity). Otherwise, pick a thread at random. */ if (isc__nm_in_netthread()) { ntid = isc_nm_tid(); diff --git a/lib/ns/client.c b/lib/ns/client.c index 008defa159..5a0a913efd 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -2330,6 +2330,10 @@ ns__client_setup(ns_client_t *client, ns_clientmgr_t *mgr, bool new) { isc_mem_t *oldmctx = client->mctx; ns_query_t query = client->query; + /* + * Retain these values from the existing client, but + * zero every thing else. + */ *client = (ns_client_t){ .magic = 0, .mctx = oldmctx, .manager = oldmgr,