File tree Expand file tree Collapse file tree 2 files changed +19
-12
lines changed
Expand file tree Collapse file tree 2 files changed +19
-12
lines changed Original file line number Diff line number Diff line change @@ -355,11 +355,13 @@ func NewRegisterCovenantFromGeneric(
355355 // Decode height from bytes
356356 ret .Height = binary .LittleEndian .Uint32 (gc .Items [1 ])
357357 // Decode resource data
358- tmpData , err := NewDomainResourceDataFromBytes (gc .Items [2 ])
359- if err != nil {
360- return nil , err
358+ if len (gc .Items [2 ]) > 0 {
359+ tmpData , err := NewDomainResourceDataFromBytes (gc .Items [2 ])
360+ if err != nil {
361+ return nil , err
362+ }
363+ ret .ResourceData = * tmpData
361364 }
362- ret .ResourceData = * tmpData
363365 return ret , nil
364366}
365367
@@ -391,11 +393,13 @@ func NewUpdateCovenantFromGeneric(
391393 // Decode height from bytes
392394 ret .Height = binary .LittleEndian .Uint32 (gc .Items [1 ])
393395 // Decode resource data
394- tmpData , err := NewDomainResourceDataFromBytes (gc .Items [2 ])
395- if err != nil {
396- return nil , err
396+ if len (gc .Items [2 ]) > 0 {
397+ tmpData , err := NewDomainResourceDataFromBytes (gc .Items [2 ])
398+ if err != nil {
399+ return nil , fmt .Errorf ("decode domain resource data: %w" , err )
400+ }
401+ ret .ResourceData = * tmpData
397402 }
398- ret .ResourceData = * tmpData
399403 return ret , nil
400404}
401405
Original file line number Diff line number Diff line change @@ -70,18 +70,19 @@ func (d *DomainResourceData) decode(data []byte) error {
7070 var err error
7171 // Version
7272 if err = binary .Read (r , binary .LittleEndian , & d .Version ); err != nil {
73- return err
73+ return fmt . Errorf ( "read version: %w" , err )
7474 }
7575 // Records
7676 var recordType uint8
7777 var record DomainRecord
78+ recordLoop:
7879 for {
7980 // Read record type
8081 if err = binary .Read (r , binary .LittleEndian , & recordType ); err != nil {
8182 if errors .Is (err , io .EOF ) {
8283 break
8384 }
84- return err
85+ return fmt . Errorf ( "read record type: %w" , err )
8586 }
8687 switch recordType {
8788 case RecordTypeDS :
@@ -99,12 +100,14 @@ func (d *DomainResourceData) decode(data []byte) error {
99100 case RecordTypeTEXT :
100101 record = & TextDomainRecord {}
101102 default :
102- return fmt .Errorf ("unsupported record type %d" , recordType )
103+ // Stop processing on unknown record type
104+ // This matches the behavior of hsd
105+ break recordLoop
103106 }
104107 if record != nil {
105108 err = record .decode (r )
106109 if err != nil {
107- return err
110+ return fmt . Errorf ( "decode record: %w" , err )
108111 }
109112 }
110113 d .Records = append (d .Records , record )
You can’t perform that action at this time.
0 commit comments