File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ cdef object LOGGING_DEBUG
3232
3333cdef cython.tuple BYTE_TABLE
3434cdef cython.tuple SHORT_LOOKUP
35+ cdef cython.dict LONG_LOOKUP
3536
3637cdef class DNSOutgoing:
3738
Original file line number Diff line number Diff line change 3131from .._logger import log
3232from ..const import (
3333 _CLASS_UNIQUE ,
34+ _DNS_HOST_TTL ,
35+ _DNS_OTHER_TTL ,
3436 _DNS_PACKET_HEADER_LEN ,
3537 _FLAGS_QR_MASK ,
3638 _FLAGS_QR_QUERY ,
5759
5860BYTE_TABLE = tuple (PACK_BYTE (i ) for i in range (256 ))
5961SHORT_LOOKUP = tuple (PACK_SHORT (i ) for i in range (SHORT_CACHE_MAX ))
62+ LONG_LOOKUP = {i : PACK_LONG (i ) for i in (_DNS_OTHER_TTL , _DNS_HOST_TTL , 0 )}
6063
6164
6265class State (enum .Enum ):
@@ -242,7 +245,12 @@ def write_short(self, value: int_) -> None:
242245
243246 def _write_int (self , value : Union [float , int ]) -> None :
244247 """Writes an unsigned integer to the packet"""
245- self .data .append (PACK_LONG (int (value )))
248+ value_as_int = int (value )
249+ long_bytes = LONG_LOOKUP .get (value_as_int )
250+ if long_bytes is not None :
251+ self .data .append (long_bytes )
252+ else :
253+ self .data .append (PACK_LONG (value_as_int ))
246254 self .size += 4
247255
248256 def write_string (self , value : bytes_ ) -> None :
You can’t perform that action at this time.
0 commit comments