From 4d9421bcbc659e5876a76eba58a9004c54aa1e35 Mon Sep 17 00:00:00 2001 From: Nova Date: Thu, 15 May 2025 12:29:58 +0330 Subject: [PATCH] flush dns cache on system dns change --- core/server/internal/boxdns/dns_manager_windows.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/server/internal/boxdns/dns_manager_windows.go b/core/server/internal/boxdns/dns_manager_windows.go index aca72bb..486a799 100644 --- a/core/server/internal/boxdns/dns_manager_windows.go +++ b/core/server/internal/boxdns/dns_manager_windows.go @@ -5,6 +5,7 @@ import ( "github.com/gofrs/uuid/v5" "github.com/sagernet/sing/common/control" E "github.com/sagernet/sing/common/exceptions" + "github.com/sagernet/sing/common/windnsapi" "golang.org/x/sys/windows" "golang.org/x/sys/windows/registry" "log" @@ -160,6 +161,8 @@ func (d *DnsManager) restoreSystemDNS(ifx control.Interface) { } if err != nil { log.Println("[restoreSystemDNS] failed to set dns servers:", err) + } else { + _ = windnsapi.FlushResolverCache() } log.Println("[restoreSystemDNS] Local DNS Server removed for:", ifx.Name) @@ -202,6 +205,8 @@ func (d *DnsManager) setSystemDNS(ifx control.Interface) { if err = luid.SetDNS(winipcfg.AddressFamily(windows.AF_INET), newDnsServers, nil); err != nil { log.Println("[setSystemDNS] failed to set dns servers:", err) + } else { + _ = windnsapi.FlushResolverCache() } log.Println("[setSystemDNS] Local DNS Server added for:", ifx.Name)