aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-12-28 21:15:06 +0100
committerMartin Polden <mpolden@mpolden.no>2019-12-28 21:15:06 +0100
commit22a5c49cf53724d1233164815bce74115c70520b (patch)
tree36f6dbf436b1ceab56fb9332c0f0d69cc2aa1ce9
parent54d04fdfc68cd3a5c28740f5bfe739acc2d3e1d3 (diff)
Skip empty answers when merging
-rw-r--r--log/logger.go4
-rw-r--r--log/logger_test.go29
2 files changed, 22 insertions, 11 deletions
diff --git a/log/logger.go b/log/logger.go
index 2fdd78e..7fa4001 100644
--- a/log/logger.go
+++ b/log/logger.go
@@ -129,7 +129,9 @@ func (l *Logger) Get(n int) ([]Entry, error) {
entry = &entries[len(entries)-1]
ids[le.ID] = entry
}
- entry.Answers = append(entry.Answers, le.Answer)
+ if le.Answer != "" {
+ entry.Answers = append(entry.Answers, le.Answer)
+ }
}
return entries, nil
}
diff --git a/log/logger_test.go b/log/logger_test.go
index ae40223..e84ae06 100644
--- a/log/logger_test.go
+++ b/log/logger_test.go
@@ -35,23 +35,32 @@ func TestAnswerMerging(t *testing.T) {
now := time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC)
logger.now = func() time.Time { return now }
logger.Record(net.IPv4(192, 0, 2, 100), true, 1, "example.com.", "192.0.2.1", "192.0.2.2")
+ logger.Record(net.IPv4(192, 0, 2, 100), true, 1, "2.example.com.")
// Flush queue
if err := logger.Close(); err != nil {
t.Fatal(err)
}
- // Multi-answer log entry is merged
- got, err := logger.Get(1)
+ // Multi-answer log entries are merged
+ got, err := logger.Get(2)
if err != nil {
t.Fatal(err)
}
- want := []Entry{{
- Time: now,
- RemoteAddr: net.IPv4(192, 0, 2, 100),
- Hijacked: true,
- Qtype: 1,
- Question: "example.com.",
- Answers: []string{"192.0.2.2", "192.0.2.1"},
- }}
+ want := []Entry{
+ {
+ Time: now,
+ RemoteAddr: net.IPv4(192, 0, 2, 100),
+ Hijacked: true,
+ Qtype: 1,
+ Question: "example.com.",
+ Answers: []string{"192.0.2.2", "192.0.2.1"},
+ },
+ {
+ Time: now,
+ RemoteAddr: net.IPv4(192, 0, 2, 100),
+ Hijacked: true,
+ Qtype: 1,
+ Question: "2.example.com.",
+ }}
if !reflect.DeepEqual(want, got) {
t.Errorf("Get(1) = %+v, want %+v", got, want)
}