diff --git a/src/bosh-dns/dns/server/handlers/cache_handler.go b/src/bosh-dns/dns/server/handlers/cache_handler.go index 0fa69b205..b7951f097 100644 --- a/src/bosh-dns/dns/server/handlers/cache_handler.go +++ b/src/bosh-dns/dns/server/handlers/cache_handler.go @@ -1,11 +1,12 @@ package handlers import ( + "context" + "code.cloudfoundry.org/clock" boshlog "github.com/cloudfoundry/bosh-utils/logger" "github.com/coredns/coredns/plugin/cache" "github.com/miekg/dns" - "golang.org/x/net/context" "bosh-dns/dns/server/handlers/internal" "bosh-dns/dns/server/records/dnsresolver" @@ -24,6 +25,12 @@ type requestContext struct { fromCache bool } +type ctxKey int + +const ( + indicatorKey ctxKey = iota +) + func NewCachingDNSHandler(next dns.Handler, truncater dnsresolver.ResponseTruncater, clock clock.Clock, logger boshlog.Logger) CachingDNSHandler { ca := cache.New() ca.Next = corednsHandlerWrapper{Next: next} @@ -54,7 +61,7 @@ func (c CachingDNSHandler) ServeDNS(w dns.ResponseWriter, r *dns.Msg) { indicator := &requestContext{ fromCache: true, } - requestContext := context.WithValue(context.Background(), "indicator", indicator) + requestContext := context.WithValue(context.Background(), indicatorKey, indicator) before := c.clock.Now() _, err := c.ca.ServeDNS(requestContext, truncatingWriter, r) @@ -73,7 +80,7 @@ type corednsHandlerWrapper struct { } func (w corednsHandlerWrapper) ServeDNS(ctx context.Context, writer dns.ResponseWriter, m *dns.Msg) (int, error) { - requestContext := ctx.Value("indicator").(*requestContext) + requestContext := ctx.Value(indicatorKey).(*requestContext) requestContext.fromCache = false w.Next.ServeDNS(writer, m)