diff --git a/adapters/outbound/trojan.go b/adapters/outbound/trojan.go index 14564bc0..a7a3ae93 100644 --- a/adapters/outbound/trojan.go +++ b/adapters/outbound/trojan.go @@ -76,10 +76,11 @@ func NewTrojan(option TrojanOption) (*Trojan, error) { server := net.JoinHostPort(option.Server, strconv.Itoa(option.Port)) tOption := &trojan.Option{ - Password: option.Password, - ALPN: option.ALPN, - ServerName: option.Server, - SkipCertVerify: option.SkipCertVerify, + Password: option.Password, + ALPN: option.ALPN, + ServerName: option.Server, + SkipCertVerify: option.SkipCertVerify, + ClientSessionCache: getClientSessionCache(), } if option.SNI != "" { diff --git a/component/trojan/trojan.go b/component/trojan/trojan.go index b20fa3ae..efb802d5 100644 --- a/component/trojan/trojan.go +++ b/component/trojan/trojan.go @@ -28,10 +28,11 @@ var ( ) type Option struct { - Password string - ALPN []string - ServerName string - SkipCertVerify bool + Password string + ALPN []string + ServerName string + SkipCertVerify bool + ClientSessionCache tls.ClientSessionCache } type Trojan struct { @@ -50,6 +51,7 @@ func (t *Trojan) StreamConn(conn net.Conn) (net.Conn, error) { MinVersion: tls.VersionTLS12, InsecureSkipVerify: t.option.SkipCertVerify, ServerName: t.option.ServerName, + ClientSessionCache: t.option.ClientSessionCache, } tlsConn := tls.Client(conn, tlsConfig)