WireGuard inbound: Fix leaking session information between requests (#4030)

Fixes https://github.com/XTLS/Xray-core/issues/3948 https://github.com/XTLS/Xray-core/issues/4025
This commit is contained in:
风扇滑翔翼 2024-11-20 13:00:40 +08:00 committed by GitHub
parent 7d3d6b05e3
commit 59e5d24280
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -144,15 +144,20 @@ func (s *Server) forwardConnection(dest net.Destination, conn net.Conn) {
Reason: "", Reason: "",
}) })
if s.info.inboundTag != nil { // what's this?
ctx = session.ContextWithInbound(ctx, s.info.inboundTag) // Session information should not be shared between different connections
} // why reuse them in server level? This will cause incorrect destoverride and unexpected routing behavior.
if s.info.outboundTag != nil { // Disable it temporarily. Maybe s.info should be removed.
ctx = session.ContextWithOutbounds(ctx, []*session.Outbound{s.info.outboundTag})
} // if s.info.inboundTag != nil {
if s.info.contentTag != nil { // ctx = session.ContextWithInbound(ctx, s.info.inboundTag)
ctx = session.ContextWithContent(ctx, s.info.contentTag) // }
} // if s.info.outboundTag != nil {
// ctx = session.ContextWithOutbounds(ctx, []*session.Outbound{s.info.outboundTag})
// }
// if s.info.contentTag != nil {
// ctx = session.ContextWithContent(ctx, s.info.contentTag)
// }
link, err := s.info.dispatcher.Dispatch(ctx, dest) link, err := s.info.dispatcher.Dispatch(ctx, dest)
if err != nil { if err != nil {