11use std:: {
22 collections:: HashMap ,
3- ops:: DerefMut ,
3+ ops:: { Deref , DerefMut } ,
44 path:: PathBuf ,
55 sync:: Arc ,
66 time:: { Duration , Instant } ,
@@ -338,7 +338,7 @@ async fn process(
338338 server_opts : ServerOpts ,
339339) -> SerialMessage {
340340 use crate :: libdns:: proto:: error:: ProtoError ;
341- use crate :: libdns:: proto:: op:: { Edns , Header , Message , MessageType , OpCode , ResponseCode } ;
341+ use crate :: libdns:: proto:: op:: { Header , Message , MessageType , OpCode , ResponseCode } ;
342342
343343 let addr = message. addr ( ) ;
344344 let protocol = message. protocol ( ) ;
@@ -349,36 +349,6 @@ async fn process(
349349 MessageType :: Query => {
350350 match request. op_code ( ) {
351351 OpCode :: Query => {
352- let id = request. id ( ) ;
353- let qflags = request. header ( ) . flags ( ) ;
354- let qop_code = request. op_code ( ) ;
355- let message_type = request. message_type ( ) ;
356- let is_dnssec =
357- request. extensions ( ) . as_ref ( ) . map_or ( false , Edns :: dnssec_ok) ;
358-
359- {
360- let src_addr = request. src ( ) ;
361- let protocol = request. protocol ( ) ;
362- let query = request. query ( ) ;
363- let query_name = query. name ( ) ;
364- let query_type = query. query_type ( ) ;
365- let query_class = query. query_class ( ) ;
366- log:: debug!(
367- "request:{id} src:{proto}://{addr}#{port} type:{message_type} dnssec:{is_dnssec} {op}:{query}:{qtype}:{class} qflags:{qflags}" ,
368- id = id,
369- proto = protocol,
370- addr = src_addr. ip( ) ,
371- port = src_addr. port( ) ,
372- message_type= message_type,
373- is_dnssec = is_dnssec,
374- op = qop_code,
375- query = query_name,
376- qtype = query_type,
377- class = query_class,
378- qflags = qflags,
379- ) ;
380- }
381-
382352 // start process
383353 let request_header = request. header ( ) ;
384354 let mut response_header = Header :: response_from_request ( request_header) ;
@@ -387,18 +357,42 @@ async fn process(
387357 response_header. set_authoritative ( false ) ;
388358
389359 let response = {
360+ let start = Instant :: now ( ) ;
390361 let res = handler. search ( & request, & server_opts) . await ;
362+
363+ log:: debug!(
364+ "{}Request: {:?}" ,
365+ if server_opts. is_background {
366+ "Background"
367+ } else {
368+ ""
369+ } ,
370+ request
371+ ) ;
391372 match res {
392- Ok ( lookup) => lookup,
373+ Ok ( lookup) => {
374+ log:: debug!(
375+ "Response: {}, Duration: {:?}" ,
376+ lookup. deref( ) ,
377+ start. elapsed( )
378+ ) ;
379+ lookup
380+ }
393381 Err ( e) => {
394382 if e. is_nx_domain ( ) {
383+ log:: debug!( "{}Response: error resolving: NXDomain, Duration: {:?}" , if server_opts. is_background { "Background" } else { "" } , start. elapsed( ) ) ;
395384 response_header
396385 . set_response_code ( ResponseCode :: NXDomain ) ;
397386 }
398387 match e. as_soa ( ) {
399388 Some ( soa) => soa,
400389 None => {
401- log:: debug!( "error resolving: {}" , e) ;
390+ log:: debug!(
391+ "{}Response: error resolving: {}, Duration: {:?}" ,
392+ if server_opts. is_background { "Background" } else { "" } ,
393+ e,
394+ start. elapsed( )
395+ ) ;
402396 DnsResponse :: empty ( )
403397 }
404398 }
0 commit comments