@@ -32,6 +32,7 @@ type Common struct {
3232 logger * logs.Logger // 日志记录器
3333 tlsCode string // TLS模式代码
3434 tlsConfig * tls.Config // TLS配置
35+ coreType string // 核心类型
3536 runMode string // 运行模式
3637 dataFlow string // 数据流向
3738 tunnelKey string // 隧道密钥
@@ -291,6 +292,11 @@ func (c *Common) getAddress(parsedURL *url.URL) error {
291292 return nil
292293}
293294
295+ // getCoreType 获取核心类型
296+ func (c * Common ) getCoreType (parsedURL * url.URL ) {
297+ c .coreType = parsedURL .Scheme
298+ }
299+
294300// getTargetAddrsString 获取目标地址组的字符串表示
295301func (c * Common ) getTargetAddrsString () string {
296302 addrs := make ([]string , len (c .targetTCPAddrs ))
@@ -447,6 +453,7 @@ func (c *Common) initConfig(parsedURL *url.URL) error {
447453 return err
448454 }
449455
456+ c .getCoreType (parsedURL )
450457 c .getTunnelKey (parsedURL )
451458 c .getPoolCapacity (parsedURL )
452459 c .getRunMode (parsedURL )
@@ -519,7 +526,7 @@ func (c *Common) initTunnelListener() error {
519526 }
520527
521528 // 初始化隧道TCP监听器
522- if c .tunnelTCPAddr != nil && c .disableTCP != "1" {
529+ if c .tunnelTCPAddr != nil && ( c .disableTCP != "1" || c . coreType != "client" ) {
523530 tunnelListener , err := net .ListenTCP ("tcp" , c .tunnelTCPAddr )
524531 if err != nil {
525532 return fmt .Errorf ("initTunnelListener: listenTCP failed: %w" , err )
@@ -528,7 +535,7 @@ func (c *Common) initTunnelListener() error {
528535 }
529536
530537 // 初始化隧道UDP监听器
531- if c .tunnelUDPAddr != nil && c .disableUDP != "1" {
538+ if c .tunnelUDPAddr != nil && ( c .disableUDP != "1" || c . coreType != "client" ) {
532539 tunnelUDPConn , err := net .ListenUDP ("udp" , c .tunnelUDPAddr )
533540 if err != nil {
534541 return fmt .Errorf ("initTunnelListener: listenUDP failed: %w" , err )
0 commit comments