mirror of
https://github.com/fumiama/dnskip.git
synced 2026-06-22 21:41:53 +08:00
fix: wrong deadline report
This commit is contained in:
2
go.mod
2
go.mod
@@ -5,7 +5,7 @@ go 1.20
|
|||||||
require (
|
require (
|
||||||
github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d
|
github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d
|
||||||
github.com/fumiama/orbyte v0.0.0-20251002065953-3bb358367eb5
|
github.com/fumiama/orbyte v0.0.0-20251002065953-3bb358367eb5
|
||||||
github.com/fumiama/terasu v0.0.0-20251006044146-d81a14f4444c
|
github.com/fumiama/terasu v0.0.0-20251006061017-78a388f8731c
|
||||||
github.com/sirupsen/logrus v1.9.3
|
github.com/sirupsen/logrus v1.9.3
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -7,8 +7,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
|
|||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/fumiama/orbyte v0.0.0-20251002065953-3bb358367eb5 h1:j9o0XVvdAeLwrBYMnh0SerrMc9CgNU6AGszbsvFzoc0=
|
github.com/fumiama/orbyte v0.0.0-20251002065953-3bb358367eb5 h1:j9o0XVvdAeLwrBYMnh0SerrMc9CgNU6AGszbsvFzoc0=
|
||||||
github.com/fumiama/orbyte v0.0.0-20251002065953-3bb358367eb5/go.mod h1:FOjdw7KdCbK2eH3gRPhwFNCoXKpu9sN5vPH4El/8e0c=
|
github.com/fumiama/orbyte v0.0.0-20251002065953-3bb358367eb5/go.mod h1:FOjdw7KdCbK2eH3gRPhwFNCoXKpu9sN5vPH4El/8e0c=
|
||||||
github.com/fumiama/terasu v0.0.0-20251006044146-d81a14f4444c h1:goudQ1xbK4WNPmMCdGwyzj+pJKrSX2s5HIMYdisbRKg=
|
github.com/fumiama/terasu v0.0.0-20251006061017-78a388f8731c h1:fn5vxrQ4maTkwZqwL67dYLT4aDK/q+eufGZWLDmiFNc=
|
||||||
github.com/fumiama/terasu v0.0.0-20251006044146-d81a14f4444c/go.mod h1:5wnbYtJ8Rv0GG7EIiYSqniKnGDXDvkKqCcZQehh3UCQ=
|
github.com/fumiama/terasu v0.0.0-20251006061017-78a388f8731c/go.mod h1:5wnbYtJ8Rv0GG7EIiYSqniKnGDXDvkKqCcZQehh3UCQ=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
|
|||||||
15
main.go
15
main.go
@@ -32,13 +32,14 @@ var (
|
|||||||
})
|
})
|
||||||
fallback *net.UDPAddr
|
fallback *net.UDPAddr
|
||||||
forcefb bool
|
forcefb bool
|
||||||
|
timeout uint
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
iphost := flag.String("l", "127.0.0.1:5345", "listen DNS UDP port")
|
iphost := flag.String("l", "127.0.0.1:5345", "listen DNS UDP port")
|
||||||
fbsrv := flag.String("fb", "127.0.0.1:53", "fallback to DNS UDP port")
|
fbsrv := flag.String("fb", "127.0.0.1:53", "fallback to DNS UDP port")
|
||||||
debug := flag.Bool("d", false, "show debug log")
|
debug := flag.Bool("d", false, "show debug log")
|
||||||
timeout := flag.Uint("to", 4, "dial timeout in sec")
|
flag.UintVar(&timeout, "to", 4, "dial timeout in sec")
|
||||||
flag.BoolVar(&forcefb, "ffb", false, "force using fallback")
|
flag.BoolVar(&forcefb, "ffb", false, "force using fallback")
|
||||||
flag.BoolVar(&ip.IsIPv6Available, "6", false, "use ipv6 servers")
|
flag.BoolVar(&ip.IsIPv6Available, "6", false, "use ipv6 servers")
|
||||||
frag := flag.Uint("frag", 3, "TLS first fragemt size (0 to disable)")
|
frag := flag.Uint("frag", 3, "TLS first fragemt size (0 to disable)")
|
||||||
@@ -61,7 +62,7 @@ func main() {
|
|||||||
logrus.Infoln("Set fallback server to", fallback)
|
logrus.Infoln("Set fallback server to", fallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
dns.SetTimeout(time.Second * time.Duration(*timeout))
|
dns.SetTimeout(time.Second * time.Duration(timeout))
|
||||||
|
|
||||||
logrus.Infoln("Use ipv6 servers:", ip.IsIPv6Available)
|
logrus.Infoln("Use ipv6 servers:", ip.IsIPv6Available)
|
||||||
|
|
||||||
@@ -104,6 +105,8 @@ func response(cnt uint8, conn *net.UDPConn, addr *net.UDPAddr, payload pbuf.Byte
|
|||||||
err error
|
err error
|
||||||
tlsconn net.Conn
|
tlsconn net.Conn
|
||||||
loopcnt = 0
|
loopcnt = 0
|
||||||
|
ctx context.Context
|
||||||
|
cancel context.CancelFunc
|
||||||
)
|
)
|
||||||
|
|
||||||
if forcefb {
|
if forcefb {
|
||||||
@@ -114,7 +117,9 @@ func response(cnt uint8, conn *net.UDPConn, addr *net.UDPAddr, payload pbuf.Byte
|
|||||||
logrus.Debugln(addr, "Run on lock", cnt)
|
logrus.Debugln(addr, "Run on lock", cnt)
|
||||||
|
|
||||||
REDAIL:
|
REDAIL:
|
||||||
tlsconn, err = dialtls(cnt)
|
ctx, cancel = context.WithTimeout(context.Background(), time.Second*time.Duration(timeout))
|
||||||
|
defer cancel()
|
||||||
|
tlsconn, err = dialtls(cnt, ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Warnln(addr, "Dial DNS server err:", err)
|
logrus.Warnln(addr, "Dial DNS server err:", err)
|
||||||
return
|
return
|
||||||
@@ -238,14 +243,14 @@ func releasefree(i uint8) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func dialtls(cnt uint8) (net.Conn, error) {
|
func dialtls(cnt uint8, ctx context.Context) (net.Conn, error) {
|
||||||
conn := tlsconnCache.Get(cnt)
|
conn := tlsconnCache.Get(cnt)
|
||||||
if conn != nil {
|
if conn != nil {
|
||||||
logrus.Debugln("Lock", cnt, "get cached tls conn to", conn.RemoteAddr())
|
logrus.Debugln("Lock", cnt, "get cached tls conn to", conn.RemoteAddr())
|
||||||
return conn, nil
|
return conn, nil
|
||||||
}
|
}
|
||||||
// dummy nw and addr
|
// dummy nw and addr
|
||||||
conn, err := dns.DefaultResolver.Dial(context.Background(), "", "")
|
conn, err := dns.DefaultResolver.Dial(ctx, "", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user