all repos

scratch @ efb5ed15320b248d9b358b1345854925b84788f6

⭐ me doing recreational ~~drugs~~ programming
1 files changed, 13 insertions(+), 16 deletions(-)
dns: premable writter
Author: Oleksandr Smirnov olexsmir@gmail.com
Committed at: 2026-03-26 18:32:17 +0200
Authored at: 2026-03-26 18:32:10 +0200
Change ID: mlnrrnlqwtprnlxwylkyrqxlqmqxyovw
Parent: 0d2ab83
M dns-server/record.go
···
        84
        84
         	start := b.Len()

      
        85
        85
         	switch r.Type {

      
        86
        86
         	case AType:

      
        87
        
        -		_ = writeName(b, r.Name)

      
        88
        
        -		_ = binary.Write(b, binary.BigEndian, r.Type)

      
        89
        
        -		_ = binary.Write(b, binary.BigEndian, r.Class)

      
        90
        
        -		_ = binary.Write(b, binary.BigEndian, r.TTL)

      
        
        87
        +		_ = r.writePremable(b)

      
        91
        88
         		_ = binary.Write(b, binary.BigEndian, uint16(4))

      
        92
        89
         

      
        93
        90
         		ip := net.ParseIP(r.Data).To4()

      ···
        98
        95
         		_, _ = b.Write(ip)

      
        99
        96
         

      
        100
        97
         	case AAAAType:

      
        101
        
        -		_ = writeName(b, r.Name)

      
        102
        
        -		_ = binary.Write(b, binary.BigEndian, r.Type)

      
        103
        
        -		_ = binary.Write(b, binary.BigEndian, r.Class)

      
        104
        
        -		_ = binary.Write(b, binary.BigEndian, r.TTL)

      
        
        98
        +		_ = r.writePremable(b)

      
        105
        99
         		_ = binary.Write(b, binary.BigEndian, uint16(16))

      
        106
        100
         

      
        107
        101
         		ip := net.ParseIP(r.Data).To16()

      ···
        112
        106
         		_, _ = b.Write(ip)

      
        113
        107
         

      
        114
        108
         	case NSType, CNAMEType:

      
        115
        
        -		_ = writeName(b, r.Name)

      
        116
        
        -		_ = binary.Write(b, binary.BigEndian, r.Type)

      
        117
        
        -		_ = binary.Write(b, binary.BigEndian, r.Class)

      
        118
        
        -		_ = binary.Write(b, binary.BigEndian, r.TTL)

      
        
        109
        +		_ = r.writePremable(b)

      
        119
        110
         

      
        120
        111
         		encoded := encodeName(r.Data)

      
        121
        112
         		_ = binary.Write(b, binary.BigEndian, uint16(len(encoded)))

      
        122
        113
         		_, _ = b.Write(encoded)

      
        123
        114
         

      
        124
        115
         	case MXType:

      
        125
        
        -		_ = writeName(b, r.Name)

      
        126
        
        -		_ = binary.Write(b, binary.BigEndian, r.Type)

      
        127
        
        -		_ = binary.Write(b, binary.BigEndian, r.Class)

      
        128
        
        -		_ = binary.Write(b, binary.BigEndian, r.TTL)

      
        
        116
        +		_ = r.writePremable(b)

      
        129
        117
         

      
        130
        118
         		encoded := encodeName(r.Data)

      
        131
        119
         		_ = binary.Write(b, binary.BigEndian, uint16(2+len(encoded)))

      ···
        137
        125
         	}

      
        138
        126
         

      
        139
        127
         	return b.Len() - start, nil

      
        
        128
        +}

      
        
        129
        +

      
        
        130
        +func (r Record) writePremable(b *bytes.Buffer) error {

      
        
        131
        +	// TODO: errors

      
        
        132
        +	_ = writeName(b, r.Name)

      
        
        133
        +	_ = binary.Write(b, binary.BigEndian, r.Type)

      
        
        134
        +	_ = binary.Write(b, binary.BigEndian, r.Class)

      
        
        135
        +	_ = binary.Write(b, binary.BigEndian, r.TTL)

      
        
        136
        +	return nil

      
        140
        137
         }

      
        141
        138
         

      
        142
        139
         func readName(r *bytes.Reader, packet []byte) (string, error) {