Fix save FakeIP cache

This commit is contained in:
世界 2023-07-07 12:48:26 +08:00
parent 230e8f895d
commit ec1160924f
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
2 changed files with 11 additions and 6 deletions

View file

@ -252,7 +252,7 @@ func NewRouter(
if fakeIPOptions.Inet6Range != nil {
inet6Range = fakeIPOptions.Inet6Range.Build()
}
router.fakeIPStore = fakeip.NewStore(router, inet4Range, inet6Range)
router.fakeIPStore = fakeip.NewStore(router, router.logger, inet4Range, inet6Range)
}
usePlatformDefaultInterfaceMonitor := platformInterface != nil && platformInterface.UsePlatformDefaultInterfaceMonitor()

View file

@ -6,12 +6,14 @@ import (
"github.com/sagernet/sing-box/adapter"
"github.com/sagernet/sing-dns"
E "github.com/sagernet/sing/common/exceptions"
"github.com/sagernet/sing/common/logger"
)
var _ adapter.FakeIPStore = (*Store)(nil)
type Store struct {
router adapter.Router
logger logger.Logger
inet4Range netip.Prefix
inet6Range netip.Prefix
storage adapter.FakeIPStorage
@ -19,9 +21,10 @@ type Store struct {
inet6Current netip.Addr
}
func NewStore(router adapter.Router, inet4Range netip.Prefix, inet6Range netip.Prefix) *Store {
func NewStore(router adapter.Router, logger logger.Logger, inet4Range netip.Prefix, inet6Range netip.Prefix) *Store {
return &Store{
router: router,
logger: logger,
inet4Range: inet4Range,
inet6Range: inet6Range,
}
@ -92,10 +95,12 @@ func (s *Store) Create(domain string, strategy dns.DomainStrategy) (netip.Addr,
s.inet6Current = nextAddress
address = nextAddress
}
err := s.storage.FakeIPStore(address, domain)
if err != nil {
return netip.Addr{}, err
}
go func() {
err := s.storage.FakeIPStore(address, domain)
if err != nil {
s.logger.Warn("save FakeIP address pair: ", err)
}
}()
return address, nil
}