mirror of https://github.com/0xERR0R/blocky.git
chore(test): fix race conditions
This commit is contained in:
parent
9f15228c09
commit
500c187082
|
@ -145,10 +145,14 @@ func NewBlockingResolver(
|
|||
setupRedisEnabledSubscriber(res)
|
||||
}
|
||||
|
||||
_ = evt.Bus().Subscribe(evt.ApplicationStarted, func(_ ...string) {
|
||||
err = evt.Bus().SubscribeOnce(evt.ApplicationStarted, func(_ ...string) {
|
||||
go res.initFQDNIPCache()
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -88,7 +88,8 @@ func setupRedisCacheSubscriber(c *CachingResolver) {
|
|||
for rc := range c.redisClient.CacheChannel {
|
||||
if rc != nil {
|
||||
c.log().Debug("Received key from redis: ", rc.Key)
|
||||
c.putInCache(rc.Key, rc.Response, false, false)
|
||||
ttl := c.adjustTTLs(rc.Response.Res.Answer)
|
||||
c.putInCache(rc.Key, rc.Response, ttl, false, false)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
@ -189,7 +190,8 @@ func (r *CachingResolver) Resolve(request *model.Request) (response *model.Respo
|
|||
response, err = r.next.Resolve(request)
|
||||
|
||||
if err == nil {
|
||||
r.putInCache(cacheKey, response, false, true)
|
||||
cacheTTL := r.adjustTTLs(response.Res.Answer)
|
||||
r.putInCache(cacheKey, response, cacheTTL, false, true)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,7 +229,9 @@ func removeEdns0Extra(msg *dns.Msg) {
|
|||
}
|
||||
}
|
||||
|
||||
func (r *CachingResolver) putInCache(cacheKey string, response *model.Response, prefetch, publish bool) {
|
||||
func (r *CachingResolver) putInCache(cacheKey string, response *model.Response, ttl time.Duration,
|
||||
prefetch, publish bool,
|
||||
) {
|
||||
respCopy := response.Res.Copy()
|
||||
|
||||
// don't cache any EDNS OPT records
|
||||
|
@ -235,7 +239,7 @@ func (r *CachingResolver) putInCache(cacheKey string, response *model.Response,
|
|||
|
||||
if response.Res.Rcode == dns.RcodeSuccess && !response.Res.Truncated {
|
||||
// put value into cache
|
||||
r.resultCache.Put(cacheKey, &cacheValue{respCopy, prefetch}, r.adjustTTLs(response.Res.Answer))
|
||||
r.resultCache.Put(cacheKey, &cacheValue{respCopy, prefetch}, ttl)
|
||||
} else if response.Res.Rcode == dns.RcodeNameError {
|
||||
if r.cfg.CacheTimeNegative.IsAboveZero() {
|
||||
// put negative cache if result code is NXDOMAIN
|
||||
|
|
Loading…
Reference in New Issue