@@ -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+
66276641void
66286642comm_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