mirror of
https://gitclone.com/github.com/MetaCubeX/Clash.Meta
synced 2025-02-23 10:43:13 +08:00
chore: update tcp keepAlive setting for go1.23
This commit is contained in:
parent
acaacd8ab1
commit
24c6e7d819
12
common/net/tcp_keepalive_go122.go
Normal file
12
common/net/tcp_keepalive_go122.go
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
//go:build !go1.23
|
||||||
|
|
||||||
|
package net
|
||||||
|
|
||||||
|
import "net"
|
||||||
|
|
||||||
|
func TCPKeepAlive(c net.Conn) {
|
||||||
|
if tcp, ok := c.(*net.TCPConn); ok {
|
||||||
|
_ = tcp.SetKeepAlive(true)
|
||||||
|
_ = tcp.SetKeepAlivePeriod(KeepAliveInterval)
|
||||||
|
}
|
||||||
|
}
|
15
common/net/tcp_keepalive_go123.go
Normal file
15
common/net/tcp_keepalive_go123.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
//go:build go1.23
|
||||||
|
|
||||||
|
package net
|
||||||
|
|
||||||
|
import "net"
|
||||||
|
|
||||||
|
func TCPKeepAlive(c net.Conn) {
|
||||||
|
if tcp, ok := c.(*net.TCPConn); ok {
|
||||||
|
_ = tcp.SetKeepAliveConfig(net.KeepAliveConfig{
|
||||||
|
Enable: true,
|
||||||
|
Idle: KeepAliveIdle,
|
||||||
|
Interval: KeepAliveInterval,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
@ -7,7 +7,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
var KeepAliveInterval = 15 * time.Second
|
var (
|
||||||
|
KeepAliveIdle = 0 * time.Second
|
||||||
|
KeepAliveInterval = 0 * time.Second
|
||||||
|
)
|
||||||
|
|
||||||
func SplitNetworkType(s string) (string, string, error) {
|
func SplitNetworkType(s string) (string, string, error) {
|
||||||
var (
|
var (
|
||||||
@ -47,10 +50,3 @@ func SplitHostPort(s string) (host, port string, hasPort bool, err error) {
|
|||||||
host, port, err = net.SplitHostPort(temp)
|
host, port, err = net.SplitHostPort(temp)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func TCPKeepAlive(c net.Conn) {
|
|
||||||
if tcp, ok := c.(*net.TCPConn); ok {
|
|
||||||
_ = tcp.SetKeepAlive(true)
|
|
||||||
_ = tcp.SetKeepAlivePeriod(KeepAliveInterval)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -338,6 +338,7 @@ type RawConfig struct {
|
|||||||
FindProcessMode P.FindProcessMode `yaml:"find-process-mode" json:"find-process-mode"`
|
FindProcessMode P.FindProcessMode `yaml:"find-process-mode" json:"find-process-mode"`
|
||||||
GlobalClientFingerprint string `yaml:"global-client-fingerprint"`
|
GlobalClientFingerprint string `yaml:"global-client-fingerprint"`
|
||||||
GlobalUA string `yaml:"global-ua"`
|
GlobalUA string `yaml:"global-ua"`
|
||||||
|
KeepAliveIdle int `yaml:"keep-alive-idle"`
|
||||||
KeepAliveInterval int `yaml:"keep-alive-interval"`
|
KeepAliveInterval int `yaml:"keep-alive-interval"`
|
||||||
|
|
||||||
Sniffer RawSniffer `yaml:"sniffer" json:"sniffer"`
|
Sniffer RawSniffer `yaml:"sniffer" json:"sniffer"`
|
||||||
@ -649,6 +650,10 @@ func parseGeneral(cfg *RawConfig) (*General, error) {
|
|||||||
C.ASNUrl = cfg.GeoXUrl.ASN
|
C.ASNUrl = cfg.GeoXUrl.ASN
|
||||||
C.GeodataMode = cfg.GeodataMode
|
C.GeodataMode = cfg.GeodataMode
|
||||||
C.UA = cfg.GlobalUA
|
C.UA = cfg.GlobalUA
|
||||||
|
|
||||||
|
if cfg.KeepAliveIdle != 0 {
|
||||||
|
N.KeepAliveIdle = time.Duration(cfg.KeepAliveIdle) * time.Second
|
||||||
|
}
|
||||||
if cfg.KeepAliveInterval != 0 {
|
if cfg.KeepAliveInterval != 0 {
|
||||||
N.KeepAliveInterval = time.Duration(cfg.KeepAliveInterval) * time.Second
|
N.KeepAliveInterval = time.Duration(cfg.KeepAliveInterval) * time.Second
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,8 @@ external-doh-server: /dns-query
|
|||||||
global-client-fingerprint: chrome
|
global-client-fingerprint: chrome
|
||||||
|
|
||||||
# TCP keep alive interval
|
# TCP keep alive interval
|
||||||
keep-alive-interval: 15
|
# keep-alive-idle: 7200
|
||||||
|
# keep-alive-interval: 75
|
||||||
|
|
||||||
# routing-mark:6666 # 配置 fwmark 仅用于 Linux
|
# routing-mark:6666 # 配置 fwmark 仅用于 Linux
|
||||||
experimental:
|
experimental:
|
||||||
|
Loading…
Reference in New Issue
Block a user