diff --git a/lists/list_cache.go b/lists/list_cache.go index e6035fa26..d5f78627e 100644 --- a/lists/list_cache.go +++ b/lists/list_cache.go @@ -114,6 +114,9 @@ func NewListCache(t ListCacheType, groupToLinks map[string][]string, refreshPeri var initError error if async { initError = nil + + // start list refresh in the background + go b.Refresh() } else { initError = b.refresh(true) } diff --git a/resolver/blocking_resolver_test.go b/resolver/blocking_resolver_test.go index 9e29619b8..d189ae4aa 100644 --- a/resolver/blocking_resolver_test.go +++ b/resolver/blocking_resolver_test.go @@ -74,7 +74,6 @@ var _ = Describe("BlockingResolver", Label("blockingResolver"), func() { Expect(err).Should(Succeed()) sut = tmp.(*BlockingResolver) sut.Next(m) - sut.RefreshLists() }) AfterEach(func() { @@ -152,6 +151,33 @@ var _ = Describe("BlockingResolver", Label("blockingResolver"), func() { }) }) + Describe("Blocking with fast start strategy", func() { + BeforeEach(func() { + sutConfig = config.BlockingConfig{ + BlockType: "ZEROIP", + BlockTTL: config.Duration(time.Minute), + BlackLists: map[string][]string{ + "gr1": {"\n/regex/"}, + }, + ClientGroupsBlock: map[string][]string{ + "default": {"gr1"}, + }, + StartStrategy: config.StartStrategyTypeFast, + } + + }) + + When("Domain is on the black list", func() { + It("should block request", func() { + Eventually(func(g Gomega) { + resp, err = sut.Resolve(newRequestWithClient("regex.com.", dns.Type(dns.TypeA), "1.2.1.2", "client1")) + g.Expect(err).Should(Succeed()) + g.Expect(resp.Res.Answer).Should(BeDNSRecord("regex.com.", dns.TypeA, 60, "0.0.0.0")) + }).Should(Succeed()) + }) + }) + }) + Describe("Blocking requests", func() { var rType ResponseType BeforeEach(func() {