From 4e2e0f148bc3fa935498162986d466b52a2f94bd Mon Sep 17 00:00:00 2001 From: Santhosh Manohar Date: Tue, 15 Mar 2016 02:05:38 -0700 Subject: [PATCH] Fix nil pointer reference in ServeDNS() with concurrent go routines. Signed-off-by: Santhosh Manohar --- libnetwork/resolver.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libnetwork/resolver.go b/libnetwork/resolver.go index 83427c5ca9..854ef295bd 100644 --- a/libnetwork/resolver.go +++ b/libnetwork/resolver.go @@ -324,6 +324,13 @@ func (r *resolver) ServeDNS(w dns.ResponseWriter, query *dns.Msg) { continue } } + // If two go routines are executing in parralel one will + // block on the Once.Do and in case of error connecting + // to the external server it will end up with a nil err + // but extConn also being nil. + if extConn == nil { + continue + } // Timeout has to be set for every IO operation. extConn.SetDeadline(time.Now().Add(extIOTimeout))