outgoing xfr works, but not for my Go code

This commit is contained in:
Miek Gieben 2012-08-28 21:36:25 +02:00
parent 1b2b39f300
commit 9255ad61ac
3 changed files with 6 additions and 10 deletions

View File

@ -155,7 +155,7 @@ func (w *reply) receive() (*Msg, error) {
p = make([]byte, DefaultMsgSize)
}
n, err := w.readClient(p)
if err != nil || n == 0 {
if err != nil && n == 0 {
return nil, err
}
p = p[:n]
@ -180,7 +180,7 @@ func (w *reply) readClient(p []byte) (n int, err error) {
if w.conn == nil {
return 0, ErrConnEmpty
}
if len(p) < 1 {
if len(p) < 2 {
return 0, io.ErrShortBuffer
}
attempts := w.client.Attempts

View File

@ -28,6 +28,7 @@ import (
"runtime/pprof"
"strconv"
"strings"
"syscall"
"time"
)
@ -160,12 +161,12 @@ func main() {
go serve("tcp", name, secret)
go serve("udp", name, secret)
sig := make(chan os.Signal)
signal.Notify(sig)
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
forever:
for {
select {
case <-sig:
fmt.Printf("Signal received, stopping\n")
case s:=<-sig:
fmt.Printf("Signal (%d) received, stopping\n", s)
break forever
}
}

5
xfr.go
View File

@ -52,10 +52,6 @@ func (w *reply) axfrReceive(c chan *XfrToken) {
for {
in, err := w.receive()
if err != nil {
c <- &XfrToken{in.Answer, err}
return
}
if w.req.Id != in.Id {
c <- &XfrToken{in.Answer, ErrId}
return
}
@ -185,7 +181,6 @@ func axfrSend(w ResponseWriter, req *Msg, c chan *XfrToken, e *error) {
for x := range c {
// assume it fits
rep.Answer = append(rep.Answer, x.RR...)
println(rep.String())
if err := w.Write(rep); e != nil {
*e = err
return