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

  1. Use one of: "path", "cookie", "header", "query"
  2. 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

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


AI-assisted analysis of XTLS/Xray-core@7d214f8b09 (2026-08-15). Data as JSON: /api/errors/d9f69b46e6c2a80d. Report an issue: GitHub.