outgoing xfr works, but not for my Go code
This commit is contained in:
parent
1b2b39f300
commit
9255ad61ac
|
@ -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
|
||||
|
|
|
@ -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
5
xfr.go
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue