Revert pkg/nonwriter changes (#1829)

The DoH work (#1619) made changes to pkg/nonwriter.Writer that in
hindsight were not backwards compatible; it added override for the
LocalAddr() and RemoteAddr(). Instead of rolling back that PR, this PR
reverts those changes and creates a DoHWriter for use in the
https-server.go side of things.

This was only caught in the integration test making this hard to catch,
so we add a upstream_file_test.go that tries (doesn't work yet) to test
this in the unit tests as well. Esp. helpful when 'git bisecting'.

Fixes #1826
This commit is contained in:
Miek Gieben
2018-05-23 13:50:27 +01:00
committed by Chris O'Haver
parent 49891d2103
commit 0f74281a53
4 changed files with 81 additions and 19 deletions

View File

@@ -8,7 +8,6 @@ import (
"net/http"
"strconv"
"github.com/coredns/coredns/plugin/pkg/nonwriter"
"github.com/miekg/dns"
)
@@ -119,12 +118,10 @@ func (s *ServerHTTPS) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return
}
// Create a non-writer with the correct addresses in it.
dw := &nonwriter.Writer{Laddr: s.listenAddr}
// Create a DoHWriter with the correct addresses in it.
h, p, _ := net.SplitHostPort(r.RemoteAddr)
po, _ := strconv.Atoi(p)
ip := net.ParseIP(h)
dw.Raddr = &net.TCPAddr{IP: ip, Port: po}
port, _ := strconv.Atoi(p)
dw := &DoHWriter{laddr: s.listenAddr, raddr: &net.TCPAddr{IP: net.ParseIP(h), Port: port}}
// We just call the normal chain handler - all error handling is done there.
// We should expect a packet to be returned that we can send to the client.