XTLS/Xray-core · error
unsupported seq placement:
Error message
unsupported seq placement:
What it means
SplitHTTPConfig.Build() validates "seqPlacement" (sequence-number placement for packet-up uploads) at transport_method.go:391-397. Empty defaults to "path"; only "path", "cookie", "header", "query" pass; anything else is appended to the error. Keys for non-path placements get defaults at lines 427-434 (x_seq / X-Seq).
Source
Thrown at infra/conf/transport_method.go:396
if c.UplinkHTTPMethod == "GET" && c.Mode != "packet-up" {
return nil, errors.New("uplinkHTTPMethod can be GET only in packet-up mode")
}
switch c.SessionIDPlacement {
case "":
c.SessionIDPlacement = "path"
case "path", "cookie", "header", "query":
default:
return nil, errors.New("unsupported session placement: " + c.SessionIDPlacement)
}
switch c.SeqPlacement {
case "":
c.SeqPlacement = "path"
case "path", "cookie", "header", "query":
default:
return nil, errors.New("unsupported seq placement: " + c.SeqPlacement)
}
if c.SessionIDPlacement != "path" && c.SessionIDKey == "" {
switch c.SessionIDPlacement {
case "cookie", "query":
c.SessionIDKey = "x_session"
case "header":
c.SessionIDKey = "X-Session"
}
}
if c.SessionIDTable != "" {
if predefined, ok := splithttp.PredefinedTable[c.SessionIDTable]; ok {
c.SessionIDTable = predefined
}
room := roomSize(len(c.SessionIDTable), c.SessionIDLength.From, c.SessionIDLength.To)
// 2.1B possiblities should be enough
if room.Cmp(big.NewInt(2<<30)) < 0 {View on GitHub (pinned to 7d214f8b09)
Solutions
- Use one of: "path", "cookie", "header", "query"
- Omit the field to use the "path" default
Example fix
// before "seqPlacement": "Path" // after "seqPlacement": "path"
Defensive patterns
Strategy: type-guard
Type guard
func validSeqPlacement(p string) bool {
switch p {
case "", "path", "cookie", "header", "query":
return true
}
return false
} Prevention
- Same enum as sessionIDPlacement; omit for path default
When it happens
Trigger: "seqPlacement": "PATH", "header-in-query", "body", or any value outside the four allowed ones.
Common situations: Same-family typos as sessionIDPlacement; copying placement vocabulary from other splithttp fields with different enums.
Related errors
- Failed to unmarshal "extra".
- unsupported mode:
- xPaddingBytes cannot be disabled
- unsupported padding placement:
- unsupported padding method:
AI-assisted analysis of XTLS/Xray-core@7d214f8b09 (2026-08-15).
Data as JSON: /api/errors/d9f69b46e6c2a80d.
Report an issue: GitHub.