Skip to content

Commit ae5c16b

Browse files
committed
don't make server fail if initial blocklist downloading fails
1 parent 1e56a1f commit ae5c16b

2 files changed

Lines changed: 16 additions & 16 deletions

File tree

cmd/function53/dnslistener.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,22 @@ type DnsQueryHandler struct {
2626
func NewDnsQueryHandler(
2727
forwarderPool *ForwarderPool,
2828
conf Config,
29-
blocklist Blocklist,
3029
queryLogger QueryLogger,
3130
logger *log.Logger,
3231
) *DnsQueryHandler {
33-
qh := &DnsQueryHandler{
32+
h := &DnsQueryHandler{
3433
conf: conf,
3534
forwarderPool: forwarderPool,
3635
queryLogger: queryLogger,
36+
blocklist: Blocklist{}, // start with empty
3737
metrics: makeMetrics(),
3838
logl: logex.Levels(logger),
3939
}
4040

41-
// to trigger metrics calculation
42-
qh.replaceBlocklist(blocklist)
41+
// to trigger initial metrics calculation
42+
h.replaceBlocklist(h.blocklist)
4343

44-
return qh
44+
return h
4545
}
4646

4747
func (h *DnsQueryHandler) Handle(rw dns.ResponseWriter, req *dns.Msg) {

cmd/function53/main.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,6 @@ func logic(ctx context.Context, rootLogger *log.Logger) error {
5050
return fmt.Errorf("readConfig: %w", err)
5151
}
5252

53-
blocklist, err := loadBlocklistAndDownloadIfRequired(logl)
54-
if err != nil {
55-
return fmt.Errorf("loadBlocklistAndDownloadIfRequired: %w", err)
56-
}
57-
5853
tasks := taskrunner.New(ctx, rootLogger)
5954

6055
forwarderPool := NewForwarderPool(
@@ -64,7 +59,6 @@ func logic(ctx context.Context, rootLogger *log.Logger) error {
6459
dnsHandler := NewDnsQueryHandler(
6560
forwarderPool,
6661
*conf,
67-
*blocklist,
6862
makeQueryLogger(conf.LogQueries, logex.Prefix("queryLogger", rootLogger)),
6963
logex.Prefix("queryHandler", rootLogger))
7064

@@ -81,15 +75,21 @@ func logic(ctx context.Context, rootLogger *log.Logger) error {
8175
})
8276

8377
if !conf.BlocklistDisableUpdates {
84-
replacer := func(blockList Blocklist) {
85-
dnsHandler.replaceBlocklist(blockList)
86-
}
87-
8878
tasks.Start("blocklistUpdateScheduler", func(ctx context.Context) error {
89-
return blocklistUpdateScheduler(ctx, replacer, logex.Prefix("blocklistUpdateScheduler", rootLogger))
79+
return blocklistUpdateScheduler(ctx, func(blockList Blocklist) {
80+
dnsHandler.replaceBlocklist(blockList)
81+
}, logex.Prefix("blocklistUpdateScheduler", rootLogger))
9082
})
9183
}
9284

85+
blocklist, err := loadBlocklistAndDownloadIfRequired(logl)
86+
if err != nil {
87+
// can't fail-by-stopping here, because blocklist downloading might depend on *our* DNS not being up
88+
logl.Error.Printf("loadBlocklistAndDownloadIfRequired: %v", err)
89+
} else {
90+
dnsHandler.replaceBlocklist(*blocklist)
91+
}
92+
9393
logl.Info.Printf("Started %s", dynversion.Version)
9494

9595
return tasks.Wait()

0 commit comments

Comments
 (0)