1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2026-02-03 23:05:24 -05:00

Added Transport Layer Chained Proxy Support

This commit is contained in:
Shelikhoo
2021-02-28 18:47:31 +00:00
parent 8980cf2fcc
commit dd51d32250
5 changed files with 74 additions and 3 deletions

View File

@@ -159,7 +159,7 @@ func (h *Handler) Address() net.Address {
// Dial implements internet.Dialer.
func (h *Handler) Dial(ctx context.Context, dest net.Destination) (internet.Connection, error) {
if h.senderSettings != nil {
if h.senderSettings.ProxySettings.HasTag() {
if h.senderSettings.ProxySettings.HasTag() && !h.senderSettings.ProxySettings.TransportLayerProxy {
tag := h.senderSettings.ProxySettings.Tag
handler := h.outboundManager.GetHandler(tag)
if handler != nil {
@@ -196,6 +196,12 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (internet.Conn
}
}
if h.senderSettings.ProxySettings.HasTag() && h.senderSettings.ProxySettings.TransportLayerProxy {
tag := h.senderSettings.ProxySettings.Tag
newError("transport layer proxying to ", tag, " for dest ", dest).AtDebug().WriteToLog(session.ExportIDToError(ctx))
session.SetTransportLayerProxyTagToContext(ctx, tag)
}
conn, err := internet.Dial(ctx, dest, h.streamSettings)
return h.getStatCouterConnection(conn), err
}