XHTTP transport: Fix "auto" mode with REALITY (#5638)

Fixes https://github.com/XTLS/Xray-core/issues/5635

BTW, fixes https://github.com/XTLS/Xray-core/issues/5631
This commit is contained in:
Dmitrii Makhno
2026-02-02 11:07:45 +03:00
committed by GitHub
parent 20cf00c271
commit a6ec3b6e70
2 changed files with 9 additions and 7 deletions

View File

@@ -314,6 +314,7 @@ func (c *SplitHTTPConfig) Build() (proto.Message, error) {
switch c.UplinkDataPlacement {
case "":
c.UplinkDataPlacement = "body"
case "body":
case "cookie", "header":
if c.Mode != "packet-up" {
return nil, errors.New("UplinkDataPlacement can be " + c.UplinkDataPlacement + " only in packet-up mode")
@@ -334,7 +335,7 @@ func (c *SplitHTTPConfig) Build() (proto.Message, error) {
switch c.SessionPlacement {
case "":
c.SessionPlacement = "path"
case "cookie", "header", "query":
case "path", "cookie", "header", "query":
default:
return nil, errors.New("unsupported session placement: " + c.SessionPlacement)
}
@@ -342,7 +343,7 @@ func (c *SplitHTTPConfig) Build() (proto.Message, error) {
switch c.SeqPlacement {
case "":
c.SeqPlacement = "path"
case "cookie", "header", "query":
case "path", "cookie", "header", "query":
if c.SessionPlacement == "path" {
return nil, errors.New("SeqPlacement must be path when SessionPlacement is path")
}

View File

@@ -272,11 +272,6 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
requestURL.Host = dest.Address.String()
}
sessionId := ""
if transportConfiguration.Mode != "stream-one" {
sessionIdUuid := uuid.New()
sessionId = sessionIdUuid.String()
}
requestURL.Path = transportConfiguration.GetNormalizedPath()
requestURL.RawQuery = transportConfiguration.GetNormalizedQuery()
@@ -293,6 +288,12 @@ func Dial(ctx context.Context, dest net.Destination, streamSettings *internet.Me
}
}
sessionId := ""
if mode != "stream-one" {
sessionIdUuid := uuid.New()
sessionId = sessionIdUuid.String()
}
errors.LogInfo(ctx, fmt.Sprintf("XHTTP is dialing to %s, mode %s, HTTP version %s, host %s", dest, mode, httpVersion, requestURL.Host))
requestURL2 := requestURL