From d814a20623830bce7ae193e40727363f58149b79 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sun, 11 Sep 2011 17:01:55 +0200 Subject: [PATCH] test multiple messages --- client_test.go | 26 ++++++++++++++++++++++---- xfr.go | 6 ++++-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/client_test.go b/client_test.go index 36b1f640..1086fef6 100644 --- a/client_test.go +++ b/client_test.go @@ -76,7 +76,6 @@ func TestClientTsigAXFR(t *testing.T) { secrets := make(map[string]string) secrets["axfr."] = "so6ZGir4GPAqINNh9U5c3A==" - println(m.String()) c := NewClient() c.Net = "tcp" c.TsigSecret = secrets @@ -87,9 +86,28 @@ func TestClientTsigAXFR(t *testing.T) { } for { ex := <-c.ReplyChan - println(ex.Reply.String()) - println(ex.Error.String()) - if ex.Error != nil { + t.Log(ex.Reply.String()) + if ex.Error == ErrXfrLast { + break + } + } +} + +func TestClientAXFRMultipleMessages(t *testing.T) { + m := new(Msg) + m.SetAxfr("dnsex.nl.") + + c := NewClient() + c.Net = "tcp" + + if err := c.XfrReceive(m, "85.223.71.124:53"); err != nil { + t.Log("Failed to setup axfr" + err.String()) + t.Fail() + } + for { + ex := <-c.ReplyChan + t.Log(ex.Reply.String()) + if ex.Error == ErrXfrLast { break } } diff --git a/xfr.go b/xfr.go index 453879f0..6ecf5e7d 100644 --- a/xfr.go +++ b/xfr.go @@ -41,7 +41,10 @@ func (w *reply) axfrReceive() { w.Client().ReplyChan <- &Exchange{w.req, in, err} return } - /* id check */ + if w.req.Id != in.Id { + w.Client().ReplyChan <- &Exchange{w.req, in, ErrId} + return + } if first { if !checkXfrSOA(in, true) { @@ -74,7 +77,6 @@ func (w *reply) ixfrReceive() { w.Client().ReplyChan <- &Exchange{w.req, in, err} return } - if w.req.Id != in.Id { w.Client().ReplyChan <- &Exchange{w.req, in, ErrId} return