diff options
author | 2018-07-03 09:47:26 +0100 | |
---|---|---|
committer | 2018-07-03 09:47:26 +0100 | |
commit | 908d4fbd230ce8c64c1b6b1ea9a0de558c00bdd7 (patch) | |
tree | 287791ab5f5529d3d55cea24095bd2cbda192d8d /request/request.go | |
parent | 6dd2cf8c4b30822f1d718fbef728f6856628a3df (diff) | |
download | coredns-908d4fbd230ce8c64c1b6b1ea9a0de558c00bdd7.tar.gz coredns-908d4fbd230ce8c64c1b6b1ea9a0de558c00bdd7.tar.zst coredns-908d4fbd230ce8c64c1b6b1ea9a0de558c00bdd7.zip |
request: add LocalIP (#1925)
* request: add LocalIP
Fix TODO that was added: Add LocalIP and test the Clear() method.
Signed-off-by: Miek Gieben <miek@miek.nl>
* Move to Errorf
PR feedback and move to Errorf instead Fatalf.
Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'request/request.go')
-rw-r--r-- | request/request.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/request/request.go b/request/request.go index 36ec85731..06f840f89 100644 --- a/request/request.go +++ b/request/request.go @@ -32,7 +32,7 @@ type Request struct { port string // client's port. family int // transport's family. localPort string // server's port. - // TODO(miek): localIP once that is merged. + localIP string // server's ip. } // NewWithQuestion returns a new request based on the old, but with a new question @@ -61,11 +61,18 @@ func (r *Request) IP() string { // LocalIP gets the (local) IP address of server handling the request. func (r *Request) LocalIP() string { + if r.localIP != "" { + return r.localIP + } + ip, _, err := net.SplitHostPort(r.W.LocalAddr().String()) if err != nil { - return r.W.LocalAddr().String() + r.localIP = r.W.LocalAddr().String() + return r.localIP } - return ip + + r.localIP = ip + return r.localIP } // Port gets the (remote) port of the client making the request. @@ -423,6 +430,7 @@ func (r *Request) ErrorMessage(rcode int) *dns.Msg { func (r *Request) Clear() { r.name = "" r.ip = "" + r.localIP = "" r.port = "" r.localPort = "" r.family = 0 |