From 908d4fbd230ce8c64c1b6b1ea9a0de558c00bdd7 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Tue, 3 Jul 2018 09:47:26 +0100 Subject: request: add LocalIP (#1925) * request: add LocalIP Fix TODO that was added: Add LocalIP and test the Clear() method. Signed-off-by: Miek Gieben * Move to Errorf PR feedback and move to Errorf instead Fatalf. Signed-off-by: Miek Gieben --- request/request.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'request/request.go') 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 -- cgit v1.2.3