Skip to content

Commit 9655b96

Browse files
committed
Clean and case-insensitive lookups for qname in pebble database
Clean and case-insensitive qname in JSON struct sent north
1 parent 49e2140 commit 9655b96

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

pkg/protocols/protocols.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package protocols
22

33
import (
4+
"strings"
45
"time"
56

67
"github.com/miekg/dns"
@@ -101,10 +102,11 @@ func NewQnameEvent(msg *dns.Msg, ts time.Time) NewQnameJSON {
101102

102103
qType := int(msg.Question[0].Qtype)
103104
qClass := int(msg.Question[0].Qclass)
105+
qname := strings.ToLower(strings.ToValidUTF8(msg.Question[0].Name, ""))
104106

105107
return NewQnameJSON{
106108
Type: NewQnameJSONType,
107-
Qname: msg.Question[0].Name,
109+
Qname: qname,
108110
Qtype: &qType,
109111
Qclass: &qClass,
110112
Timestamp: &ts,

pkg/runner/runner.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1831,19 +1831,21 @@ func (edm *dnstapMinimiser) qnameSeen(msg *dns.Msg, seenQnameLRU *lru.Cache[stri
18311831
// only move an already added entry to the front of the
18321832
// eviction list which should be OK.
18331833

1834-
_, ok := seenQnameLRU.Get(msg.Question[0].Name)
1834+
qname := strings.ToLower(strings.ToValidUTF8(msg.Question[0].Name, ""))
1835+
1836+
_, ok := seenQnameLRU.Get(qname)
18351837
if ok {
18361838
// It exists in the LRU cache
18371839
return true
18381840
}
18391841
// Add it to the LRU
1840-
evicted := seenQnameLRU.Add(msg.Question[0].Name, struct{}{})
1842+
evicted := seenQnameLRU.Add(qname, struct{}{})
18411843
if evicted {
18421844
edm.promSeenQnameLRUEvicted.Inc()
18431845
}
18441846

18451847
// It was not in the LRU cache, does it exist in pebble (on disk)?
1846-
_, closer, err := pdb.Get([]byte(msg.Question[0].Name))
1848+
_, closer, err := pdb.Get([]byte(qname))
18471849
if err == nil {
18481850
// The value exists in pebble
18491851
if err := closer.Close(); err != nil {
@@ -1854,7 +1856,7 @@ func (edm *dnstapMinimiser) qnameSeen(msg *dns.Msg, seenQnameLRU *lru.Cache[stri
18541856

18551857
// If the key does not exist in pebble we insert it
18561858
if errors.Is(err, pebble.ErrNotFound) {
1857-
if err := pdb.Set([]byte(msg.Question[0].Name), []byte{}, pebble.Sync); err != nil {
1859+
if err := pdb.Set([]byte(qname), []byte{}, pebble.Sync); err != nil {
18581860
edm.log.Error("unable to insert key in pebble", "error", err)
18591861
}
18601862
return false

0 commit comments

Comments
 (0)