Change dns requests to be workers instead of microtasks

This commit is contained in:
Daniel 2020-05-20 15:15:07 +02:00
parent e464ee136c
commit 1c5474bdcd

View file

@ -24,9 +24,8 @@ import (
) )
var ( var (
module *modules.Module module *modules.Module
dnsServer *dns.Server dnsServer *dns.Server
mtDNSRequest = "dns request"
listenAddress = "0.0.0.0:53" listenAddress = "0.0.0.0:53"
ipv4Localhost = net.IPv4(127, 0, 0, 1) ipv4Localhost = net.IPv4(127, 0, 0, 1)
@ -63,7 +62,7 @@ func prep() error {
func start() error { func start() error {
dnsServer = &dns.Server{Addr: listenAddress, Net: "udp"} dnsServer = &dns.Server{Addr: listenAddress, Net: "udp"}
dns.HandleFunc(".", handleRequestAsMicroTask) dns.HandleFunc(".", handleRequestAsWorker)
module.StartServiceWorker("dns resolver", 0, func(ctx context.Context) error { module.StartServiceWorker("dns resolver", 0, func(ctx context.Context) error {
err := dnsServer.ListenAndServe() err := dnsServer.ListenAndServe()
@ -97,8 +96,8 @@ func returnServerFailure(w dns.ResponseWriter, query *dns.Msg) {
_ = w.WriteMsg(m) _ = w.WriteMsg(m)
} }
func handleRequestAsMicroTask(w dns.ResponseWriter, query *dns.Msg) { func handleRequestAsWorker(w dns.ResponseWriter, query *dns.Msg) {
err := module.RunMicroTask(&mtDNSRequest, func(ctx context.Context) error { err := module.RunWorker("dns request", func(ctx context.Context) error {
return handleRequest(ctx, w, query) return handleRequest(ctx, w, query)
}) })
if err != nil { if err != nil {