Skip to content

Commit f8e45ed

Browse files
committed
- Fix for dnsoverquic and dnstap to use the correct dnstap
environment.
1 parent 2a28c73 commit f8e45ed

2 files changed

Lines changed: 41 additions & 10 deletions

File tree

doc/Changelog

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
16 October 2024: Yorgos
2+
- Fix for dnsoverquic and dnstap to use the correct dnstap
3+
environment.
4+
15
14 October 2024: Wouter
26
- Fix to display warning if quic-port is set but dnsoverquic is not
37
enabled when compiled.

util/netevent.c

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6624,6 +6624,20 @@ comm_point_delete(struct comm_point* c)
66246624
free(c);
66256625
}
66266626

6627+
#ifdef USE_DNSTAP
6628+
static void
6629+
send_reply_dnstap(struct dt_env* dtenv,
6630+
struct sockaddr* addr, socklen_t addrlen,
6631+
struct sockaddr_storage* client_addr, socklen_t client_addrlen,
6632+
enum comm_point_type type, void* ssl, sldns_buffer* buffer)
6633+
{
6634+
log_addr(VERB_ALGO, "from local addr", (void*)addr, addrlen);
6635+
log_addr(VERB_ALGO, "response to client", client_addr, client_addrlen);
6636+
dt_msg_send_client_response(dtenv, client_addr,
6637+
(struct sockaddr_storage*)addr, type, ssl, buffer);
6638+
}
6639+
#endif
6640+
66276641
void
66286642
comm_point_send_reply(struct comm_reply *repinfo)
66296643
{
@@ -6648,24 +6662,37 @@ comm_point_send_reply(struct comm_reply *repinfo)
66486662
repinfo->remote_addrlen, 0);
66496663
#ifdef USE_DNSTAP
66506664
/*
6651-
* sending src (client)/dst (local service) addresses over DNSTAP from udp callback
6665+
* sending src (client)/dst (local service) addresses over
6666+
* DNSTAP from udp callback
66526667
*/
66536668
if(repinfo->c->dtenv != NULL && repinfo->c->dtenv->log_client_response_messages) {
6654-
log_addr(VERB_ALGO, "from local addr", (void*)repinfo->c->socket->addr, repinfo->c->socket->addrlen);
6655-
log_addr(VERB_ALGO, "response to client", &repinfo->client_addr, repinfo->client_addrlen);
6656-
dt_msg_send_client_response(repinfo->c->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr, repinfo->c->type, repinfo->c->ssl, repinfo->c->buffer);
6669+
send_reply_dnstap(repinfo->c->dtenv,
6670+
repinfo->c->socket->addr,
6671+
repinfo->c->socket->addrlen,
6672+
&repinfo->client_addr, repinfo->client_addrlen,
6673+
repinfo->c->type, repinfo->c->ssl,
6674+
repinfo->c->buffer);
66576675
}
66586676
#endif
66596677
} else {
66606678
#ifdef USE_DNSTAP
6679+
struct dt_env* dtenv = repinfo->c->doq_socket
6680+
?repinfo->c->dtenv
6681+
:repinfo->c->tcp_parent->dtenv;
6682+
struct sldns_buffer* dtbuffer = repinfo->c->tcp_req_info
6683+
?repinfo->c->tcp_req_info->spool_buffer
6684+
:repinfo->c->buffer;
66616685
/*
6662-
* sending src (client)/dst (local service) addresses over DNSTAP from TCP callback
6686+
* sending src (client)/dst (local service) addresses over
6687+
* DNSTAP from other callbacks
66636688
*/
6664-
if(repinfo->c->tcp_parent->dtenv != NULL && repinfo->c->tcp_parent->dtenv->log_client_response_messages) {
6665-
log_addr(VERB_ALGO, "from local addr", (void*)repinfo->c->socket->addr, repinfo->c->socket->addrlen);
6666-
log_addr(VERB_ALGO, "response to client", &repinfo->client_addr, repinfo->client_addrlen);
6667-
dt_msg_send_client_response(repinfo->c->tcp_parent->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr, repinfo->c->type, repinfo->c->ssl,
6668-
( repinfo->c->tcp_req_info? repinfo->c->tcp_req_info->spool_buffer: repinfo->c->buffer ));
6689+
if(dtenv != NULL && dtenv->log_client_response_messages) {
6690+
send_reply_dnstap(dtenv,
6691+
repinfo->c->socket->addr,
6692+
repinfo->c->socket->addrlen,
6693+
&repinfo->client_addr, repinfo->client_addrlen,
6694+
repinfo->c->type, repinfo->c->ssl,
6695+
dtbuffer);
66696696
}
66706697
#endif
66716698
if(repinfo->c->tcp_req_info) {

0 commit comments

Comments
 (0)