]> Cypherpunks repositories - gostls13.git/commitdiff
net: don't forget about ongoing DNS lookup if context canceled
authorIan Lance Taylor <iant@golang.org>
Fri, 16 Jun 2017 18:48:09 +0000 (11:48 -0700)
committerIan Lance Taylor <iant@golang.org>
Fri, 16 Jun 2017 20:23:42 +0000 (20:23 +0000)
Only forget about it if the context timed out, as the comment says.

Fixes #20703.

Change-Id: Ie6234f1a32f85e6bfd052dc24a33aa63b8883c37
Reviewed-on: https://go-review.googlesource.com/45999
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/net/lookup.go

index abc56de533864c603d8747f3224f01c886e26dbe..449078423657ceaac48e60e549494692e6e4d94c 100644 (file)
@@ -185,12 +185,15 @@ func (r *Resolver) LookupIPAddr(ctx context.Context, host string) ([]IPAddr, err
 
        select {
        case <-ctx.Done():
-               // The DNS lookup timed out for some reason. Force
+               // If the DNS lookup timed out for some reason, force
                // future requests to start the DNS lookup again
                // rather than waiting for the current lookup to
                // complete. See issue 8602.
-               err := mapErr(ctx.Err())
-               lookupGroup.Forget(host)
+               ctxErr := ctx.Err()
+               if ctxErr == context.DeadlineExceeded {
+                       lookupGroup.Forget(host)
+               }
+               err := mapErr(ctxErr)
                if trace != nil && trace.DNSDone != nil {
                        trace.DNSDone(nil, false, err)
                }