Make ResponseWriter a io.Writer
The WriteBuf() is renamed Write() and returns and int and an error. The old Write() call, is now WriteBuf()
This commit is contained in:
parent
00c4f46c7e
commit
267cfaab11
28
server.go
28
server.go
|
@ -21,10 +21,10 @@ type Handler interface {
|
||||||
type ResponseWriter interface {
|
type ResponseWriter interface {
|
||||||
// RemoteAddr returns the net.Addr of the client that sent the current request.
|
// RemoteAddr returns the net.Addr of the client that sent the current request.
|
||||||
RemoteAddr() net.Addr
|
RemoteAddr() net.Addr
|
||||||
// Write writes a reply back to the client.
|
// WriteMsg writes a reply back to the client.
|
||||||
Write(*Msg) error
|
WriteMsg(*Msg) error
|
||||||
// WriteBuf writes a raw buffer back to the client.
|
// Write writes a raw buffer back to the client.
|
||||||
WriteBuf([]byte) (int, error)
|
Write([]byte) (int, error)
|
||||||
// Close closes the connection.
|
// Close closes the connection.
|
||||||
Close() error
|
Close() error
|
||||||
// TsigStatus returns the status of the Tsig.
|
// TsigStatus returns the status of the Tsig.
|
||||||
|
@ -86,7 +86,7 @@ func HandleFailed(w ResponseWriter, r *Msg) {
|
||||||
m := new(Msg)
|
m := new(Msg)
|
||||||
m.SetRcode(r, RcodeServerFailure)
|
m.SetRcode(r, RcodeServerFailure)
|
||||||
// does not matter if this write fails
|
// does not matter if this write fails
|
||||||
w.Write(m)
|
w.WriteMsg(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AuthorHandler returns a HandlerFunc that returns the authors
|
// AuthorHandler returns a HandlerFunc that returns the authors
|
||||||
|
@ -118,7 +118,7 @@ func HandleAuthors(w ResponseWriter, r *Msg) {
|
||||||
h := RR_Header{r.Question[0].Name, TypeTXT, ClassCHAOS, 0, 0}
|
h := RR_Header{r.Question[0].Name, TypeTXT, ClassCHAOS, 0, 0}
|
||||||
m.Answer = append(m.Answer, &RR_TXT{h, []string{author}})
|
m.Answer = append(m.Answer, &RR_TXT{h, []string{author}})
|
||||||
}
|
}
|
||||||
w.Write(m)
|
w.WriteMsg(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
// VersionHandler returns a HandlerFunc that returns the version
|
// VersionHandler returns a HandlerFunc that returns the version
|
||||||
|
@ -148,7 +148,7 @@ func HandleVersion(w ResponseWriter, r *Msg) {
|
||||||
m.SetReply(r)
|
m.SetReply(r)
|
||||||
h := RR_Header{r.Question[0].Name, TypeTXT, ClassCHAOS, 0, 0}
|
h := RR_Header{r.Question[0].Name, TypeTXT, ClassCHAOS, 0, 0}
|
||||||
m.Answer = append(m.Answer, &RR_TXT{h, []string{Version}})
|
m.Answer = append(m.Answer, &RR_TXT{h, []string{Version}})
|
||||||
w.Write(m)
|
w.WriteMsg(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func authorHandler() Handler { return HandlerFunc(HandleAuthors) }
|
func authorHandler() Handler { return HandlerFunc(HandleAuthors) }
|
||||||
|
@ -375,7 +375,7 @@ func serve(a net.Addr, h Handler, m []byte, u *net.UDPConn, t *net.TCPConn, tsig
|
||||||
// Send a format error back
|
// Send a format error back
|
||||||
x := new(Msg)
|
x := new(Msg)
|
||||||
x.SetRcodeFormatError(req)
|
x.SetRcodeFormatError(req)
|
||||||
w.Write(x)
|
w.WriteMsg(x)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -404,8 +404,8 @@ func serve(a net.Addr, h Handler, m []byte, u *net.UDPConn, t *net.TCPConn, tsig
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write implements the ResponseWriter.Write method.
|
// WriteMsg implements the ResponseWriter.WriteMsg method.
|
||||||
func (w *response) Write(m *Msg) (err error) {
|
func (w *response) WriteMsg(m *Msg) (err error) {
|
||||||
var data []byte
|
var data []byte
|
||||||
if w.tsigSecret != nil { // if no secrets, dont check for the tsig (which is a longer check)
|
if w.tsigSecret != nil { // if no secrets, dont check for the tsig (which is a longer check)
|
||||||
if t := m.IsTsig(); t != nil {
|
if t := m.IsTsig(); t != nil {
|
||||||
|
@ -413,7 +413,7 @@ func (w *response) Write(m *Msg) (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = w.WriteBuf(data)
|
_, err = w.Write(data)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -421,12 +421,12 @@ func (w *response) Write(m *Msg) (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = w.WriteBuf(data)
|
_, err = w.Write(data)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteBuf implements the ResponseWriter.WriteBuf method.
|
// Write implements the ResponseWriter.Write method.
|
||||||
func (w *response) WriteBuf(m []byte) (int, error) {
|
func (w *response) Write(m []byte) (int, error) {
|
||||||
switch {
|
switch {
|
||||||
case w._UDP != nil:
|
case w._UDP != nil:
|
||||||
n, err := w._UDP.WriteTo(m, w.remoteAddr)
|
n, err := w._UDP.WriteTo(m, w.remoteAddr)
|
||||||
|
|
2
xfr.go
2
xfr.go
|
@ -183,7 +183,7 @@ func axfrSend(w ResponseWriter, req *Msg, c chan *XfrToken, e *error) {
|
||||||
for x := range c {
|
for x := range c {
|
||||||
// assume it fits
|
// assume it fits
|
||||||
rep.Answer = append(rep.Answer, x.RR...)
|
rep.Answer = append(rep.Answer, x.RR...)
|
||||||
if err := w.Write(rep); e != nil {
|
if err := w.WriteMsg(rep); e != nil {
|
||||||
*e = err
|
*e = err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue