mirror of
https://github.com/SagerNet/sing-box.git
synced 2024-11-25 18:11:28 +00:00
Fix trojan fallback
This commit is contained in:
parent
29d08e63b5
commit
1445bdba37
|
@ -202,5 +202,9 @@ func (c *Conn) WriterMTU() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Conn) Upstream() any {
|
func (c *Conn) Upstream() any {
|
||||||
|
return c.Conn
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Conn) UpstreamWriter() any {
|
||||||
return c.NetConn()
|
return c.NetConn()
|
||||||
}
|
}
|
||||||
|
|
|
@ -182,7 +182,7 @@ func (h *Trojan) newConnection(ctx context.Context, conn net.Conn, metadata adap
|
||||||
func (h *Trojan) fallbackConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error {
|
func (h *Trojan) fallbackConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error {
|
||||||
var fallbackAddr M.Socksaddr
|
var fallbackAddr M.Socksaddr
|
||||||
if len(h.fallbackAddrTLSNextProto) > 0 {
|
if len(h.fallbackAddrTLSNextProto) > 0 {
|
||||||
if tlsConn, loaded := common.Cast[*tls.STDConn](conn); loaded {
|
if tlsConn, loaded := common.Cast[tls.Conn](conn); loaded {
|
||||||
connectionState := tlsConn.ConnectionState()
|
connectionState := tlsConn.ConnectionState()
|
||||||
if connectionState.NegotiatedProtocol != "" {
|
if connectionState.NegotiatedProtocol != "" {
|
||||||
if fallbackAddr, loaded = h.fallbackAddrTLSNextProto[connectionState.NegotiatedProtocol]; !loaded {
|
if fallbackAddr, loaded = h.fallbackAddrTLSNextProto[connectionState.NegotiatedProtocol]; !loaded {
|
||||||
|
@ -192,6 +192,9 @@ func (h *Trojan) fallbackConnection(ctx context.Context, conn net.Conn, metadata
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !fallbackAddr.IsValid() {
|
if !fallbackAddr.IsValid() {
|
||||||
|
if !h.fallbackAddr.IsValid() {
|
||||||
|
return E.New("fallback disabled by default")
|
||||||
|
}
|
||||||
fallbackAddr = h.fallbackAddr
|
fallbackAddr = h.fallbackAddr
|
||||||
}
|
}
|
||||||
h.logger.InfoContext(ctx, "fallback connection to ", fallbackAddr)
|
h.logger.InfoContext(ctx, "fallback connection to ", fallbackAddr)
|
||||||
|
|
Loading…
Reference in a new issue