mirror of
https://github.com/go-gost/x.git
synced 2026-10-19 16:16:32 +00:00
The tunnel is now opened inside the base dialer on first use: mux inners (mtcp/mtls/mws) hit their session cache without touching the base, so a cached session spends no OpenTunnel and leaks no tunnel per dial. SupportedDialer grows to tcp/tls/ws/mtcp/mtls/mws (each verified end to end; tls/ws handshakes trigger via the forwarded Handshaker, mux inners reuse one tunnel as a session). Error paths release the tunnel exactly once: base-dial failure resets the base state, inner failure after a successful base dial is closed by the wrapper, tunnelConn close clears the base state. Plugin bumped to v0.6.1; QUIC evolution note (transparency principle, no automatic inner substitution) recorded in the stub plan.