File tree Expand file tree Collapse file tree 3 files changed +30
-6
lines changed Expand file tree Collapse file tree 3 files changed +30
-6
lines changed Original file line number Diff line number Diff line change 2
2
Changelog
3
3
=========
4
4
5
+ ------
6
+ 0.12.4
7
+ ------
8
+
9
+ Notable fixes
10
+ =============
11
+
12
+ - DNS
13
+
14
+ - handle TXT records that contain multiple string (#84)
15
+
5
16
-------------------
6
17
0.12.3 - 2024-03-05
7
18
-------------------
Original file line number Diff line number Diff line change @@ -490,10 +490,13 @@ def _parse(cls, parsable):
490
490
raise NotEnoughData (cls .HEADER_SIZE - len (parsable ))
491
491
492
492
parser = ParserBinary (parsable )
493
+ value = ''
493
494
494
- parser .parse_string ('value' , 1 , encoding = 'ascii' )
495
+ while parser .unparsed_length :
496
+ parser .parse_string ('value' , 1 , encoding = 'ascii' )
497
+ value += parser ['value' ]
495
498
496
- return cls (** parser ), parser .parsed_length
499
+ return cls (value ), parser .parsed_length
497
500
498
501
def compose (self ):
499
502
composer = ComposerBinary ()
Original file line number Diff line number Diff line change @@ -520,12 +520,21 @@ def test_compose(self):
520
520
521
521
class TestDnsRecordTxt (unittest .TestCase ):
522
522
def setUp (self ):
523
- self .record_bytes = bytes (
523
+ self .record_bytes_single = bytes (
524
524
b'\x05 ' + # length: 5
525
525
b'value' +
526
526
b''
527
527
)
528
- self .record = DnsRecordTxt (value = 'value' )
528
+ self .record_single = DnsRecordTxt (value = 'value' )
529
+
530
+ self .record_bytes_multiple = bytes (
531
+ b'\x06 ' + # length: 6
532
+ b'value1' +
533
+ b'\x06 ' + # length: 6
534
+ b'value2' +
535
+ b''
536
+ )
537
+ self .record_multiple = DnsRecordTxt (value = 'value1value2' )
529
538
530
539
def test_error_not_enough_data (self ):
531
540
with self .assertRaises (NotEnoughData ) as context_manager :
@@ -537,7 +546,8 @@ def test_error_not_enough_data(self):
537
546
)
538
547
539
548
def test_parse (self ):
540
- self .assertEqual (DnsRecordTxt .parse_exact_size (self .record_bytes ), self .record )
549
+ self .assertEqual (DnsRecordTxt .parse_exact_size (self .record_bytes_single ), self .record_single )
550
+ self .assertEqual (DnsRecordTxt .parse_exact_size (self .record_bytes_multiple ), self .record_multiple )
541
551
542
552
def test_compose (self ):
543
- self .assertEqual (self .record .compose (), self .record_bytes )
553
+ self .assertEqual (self .record_single .compose (), self .record_bytes_single )
You can’t perform that action at this time.
0 commit comments