@@ -116,7 +116,15 @@ def __init__(
116116 self .now = now or current_time_millis ()
117117 self .source = source
118118 self .scope_id = scope_id
119- self ._parse_data (self ._initial_parse )
119+ try :
120+ self ._initial_parse ()
121+ except DECODE_EXCEPTIONS :
122+ self ._log_exception_debug (
123+ 'Received invalid packet from %s at offset %d while unpacking %r' ,
124+ self .source ,
125+ self .offset ,
126+ self .data ,
127+ )
120128
121129 def is_query (self ) -> bool :
122130 """Returns true if this is a query."""
@@ -139,18 +147,6 @@ def _initial_parse(self) -> None:
139147 self ._read_others ()
140148 self .valid = True
141149
142- def _parse_data (self , parser_call : Callable ) -> None :
143- """Parse part of the packet and catch exceptions."""
144- try :
145- parser_call ()
146- except DECODE_EXCEPTIONS :
147- self ._log_exception_debug (
148- 'Received invalid packet from %s at offset %d while unpacking %r' ,
149- self .source ,
150- self .offset ,
151- self .data ,
152- )
153-
154150 @classmethod
155151 def _log_exception_debug (cls , * logger_data : Any ) -> None :
156152 log_exc_info = False
@@ -166,7 +162,15 @@ def _log_exception_debug(cls, *logger_data: Any) -> None:
166162 def answers (self ) -> List [DNSRecord ]:
167163 """Answers in the packet."""
168164 if not self ._did_read_others :
169- self ._parse_data (self ._read_others )
165+ try :
166+ self ._read_others ()
167+ except DECODE_EXCEPTIONS :
168+ self ._log_exception_debug (
169+ 'Received invalid packet from %s at offset %d while unpacking %r' ,
170+ self .source ,
171+ self .offset ,
172+ self .data ,
173+ )
170174 return self ._answers
171175
172176 def __repr__ (self ) -> str :
0 commit comments