aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugin/dnstap/dnstapio/io.go19
-rw-r--r--plugin/dnstap/dnstapio/io_test.go9
2 files changed, 17 insertions, 11 deletions
diff --git a/plugin/dnstap/dnstapio/io.go b/plugin/dnstap/dnstapio/io.go
index 586def2ac..0c409d6fb 100644
--- a/plugin/dnstap/dnstapio/io.go
+++ b/plugin/dnstap/dnstapio/io.go
@@ -1,8 +1,7 @@
package dnstapio
import (
- "fmt"
- "io"
+ "log"
tap "github.com/dnstap/golang-dnstap"
"github.com/golang/protobuf/proto"
@@ -10,9 +9,9 @@ import (
// DnstapIO wraps the dnstap I/O routine.
type DnstapIO struct {
- writer io.WriteCloser
- queue chan tap.Dnstap
- stop chan bool
+ protocol Protocol
+ queue chan tap.Dnstap
+ stop chan bool
}
// Protocol is either `out.TCP` or `out.Socket`.
@@ -26,7 +25,7 @@ type Protocol interface {
// New dnstap I/O routine from Protocol.
func New(w Protocol) *DnstapIO {
dio := DnstapIO{}
- dio.writer = w
+ dio.protocol = w
dio.queue = make(chan tap.Dnstap, 10)
dio.stop = make(chan bool)
go dio.serve()
@@ -38,7 +37,7 @@ func (dio *DnstapIO) Dnstap(payload tap.Dnstap) {
select {
case dio.queue <- payload:
default:
- fmt.Println("[WARN] Dnstap payload dropped.")
+ log.Println("[WARN] Dnstap payload dropped.")
}
}
@@ -48,9 +47,9 @@ func (dio *DnstapIO) serve() {
case payload := <-dio.queue:
frame, err := proto.Marshal(&payload)
if err == nil {
- dio.writer.Write(frame)
+ dio.protocol.Write(frame)
} else {
- fmt.Println("[ERROR] Invalid dnstap payload dropped.")
+ log.Printf("[ERROR] Invalid dnstap payload dropped: %s\n", err)
}
case <-dio.stop:
close(dio.queue)
@@ -65,5 +64,5 @@ func (dio DnstapIO) Close() error {
dio.stop <- true
<-dio.stop
close(dio.stop)
- return dio.writer.Close()
+ return dio.protocol.Close()
}
diff --git a/plugin/dnstap/dnstapio/io_test.go b/plugin/dnstap/dnstapio/io_test.go
index 80b804752..17e7758c3 100644
--- a/plugin/dnstap/dnstapio/io_test.go
+++ b/plugin/dnstap/dnstapio/io_test.go
@@ -2,6 +2,8 @@ package dnstapio
import (
"bytes"
+ "io/ioutil"
+ "log"
"sync"
"testing"
"time"
@@ -9,6 +11,10 @@ import (
tap "github.com/dnstap/golang-dnstap"
)
+func init() {
+ log.SetOutput(ioutil.Discard)
+}
+
type buf struct {
*bytes.Buffer
cost time.Duration
@@ -38,7 +44,8 @@ func TestRace(t *testing.T) {
return
default:
time.Sleep(50 * time.Millisecond)
- dio.Dnstap(tap.Dnstap{})
+ t := tap.Dnstap_MESSAGE
+ dio.Dnstap(tap.Dnstap{Type: &t})
}
}
}()