diff --git a/CHANGES b/CHANGES index e6de9dcc64..b4951f7238 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +5909. [bug] The server-side destination port was missing from dnstap + captures of client traffic. [GL #3309] + 5908. [bug] Fix race conditions in route_connected(). [GL #3401] 5907. [bug] Fix a crash in dig NS search mode when one of the NS diff --git a/bin/tests/system/dnstap/tests.sh b/bin/tests/system/dnstap/tests.sh index 40ea0b3995..2157fd8c6a 100644 --- a/bin/tests/system/dnstap/tests.sh +++ b/bin/tests/system/dnstap/tests.sh @@ -518,6 +518,12 @@ ret=0 if [ $ret != 0 ]; then echo_i "failed"; fi status=`expr $status + $ret` +echo_i "checking whether destination UDP port is logged for client queries" +ret=0 +$DNSTAPREAD ns3/dnstap.out.save | grep -Eq "CQ [0-9:.]+ -> 10.53.0.3:${PORT} UDP" || ret=1 +if [ $ret != 0 ]; then echo_i "failed"; fi +status=`expr $status + $ret` + HAS_PYYAML=0 if [ -x "$PYTHON" ] ; then $PYTHON -c "import yaml" 2> /dev/null && HAS_PYYAML=1 diff --git a/lib/ns/client.c b/lib/ns/client.c index c6b268b974..836cedc8e1 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -1706,7 +1706,6 @@ ns__client_request(isc_nmhandle_t *handle, isc_result_t eresult, bool notimp; size_t reqsize; dns_aclenv_t *env = NULL; - isc_sockaddr_t sockaddr; #ifdef HAVE_DNSTAP dns_dtmsgtype_t dtmsgtype; #endif /* ifdef HAVE_DNSTAP */ @@ -2005,10 +2004,8 @@ ns__client_request(isc_nmhandle_t *handle, isc_result_t eresult, return; } - sockaddr = isc_nmhandle_localaddr(handle); - isc_netaddr_fromsockaddr(&client->destaddr, &sockaddr); - - isc_sockaddr_fromnetaddr(&client->destsockaddr, &client->destaddr, 0); + client->destsockaddr = isc_nmhandle_localaddr(handle); + isc_netaddr_fromsockaddr(&client->destaddr, &client->destsockaddr); result = client->manager->sctx->matchingview( &netaddr, &client->destaddr, client->message, env, &sigresult,