XTLS/Xray-core · error

Interval can't be empty

Error message

Interval can't be empty

What it means

Thrown when the freedom fragment block omits the 'interval' range. Interval (delay between segments, in ms) is a mandatory field of the fragment config alongside length; a nil Interval pointer fails immediately. MaxSplit is the only optional fragment sub-field.

Source

Thrown at infra/conf/freedom.go:131

			if config.Fragment.PacketsFrom == 0 {
				return nil, errors.New("PacketsFrom can't be 0")
			}
		}

		{
			if c.Fragment.Length == nil {
				return nil, errors.New("Length can't be empty")
			}
			config.Fragment.LengthMin = uint64(c.Fragment.Length.From)
			config.Fragment.LengthMax = uint64(c.Fragment.Length.To)
			if config.Fragment.LengthMin == 0 {
				return nil, errors.New("LengthMin can't be 0")
			}
		}

		{
			if c.Fragment.Interval == nil {
				return nil, errors.New("Interval can't be empty")
			}
			config.Fragment.IntervalMin = uint64(c.Fragment.Interval.From)
			config.Fragment.IntervalMax = uint64(c.Fragment.Interval.To)
		}

		{
			if c.Fragment.MaxSplit != nil {
				config.Fragment.MaxSplitMin = uint64(c.Fragment.MaxSplit.From)
				config.Fragment.MaxSplitMax = uint64(c.Fragment.MaxSplit.To)
			}
		}
	}

	if c.Noise != nil {
		return nil, errors.PrintRemovedFeatureError("noise = { ... }", "noises = [ { ... } ]")
	}

	if c.Noises != nil {

View on GitHub (pinned to 7d214f8b09)

Solutions

  1. Add an interval range in milliseconds, e.g. "interval": "10-20".
  2. Use "1-1" or a small fixed value if you want minimal delay between fragments.
  3. Remove the fragment block entirely if fragmentation is not wanted.

Example fix

// before
"fragment": {"packets": "tlshello", "length": "100-200"}

// after
"fragment": {"packets": "tlshello", "length": "100-200", "interval": "10-20"}
Defensive patterns

Strategy: validation

Validate before calling

if fragment != nil && fragment.Interval == nil {
    return errors.New("fragment requires an interval range in ms, e.g. '10-20'")
}

Prevention

When it happens

Trigger: "fragment": {"packets": "tlshello", "length": "100-200"} without "interval" — any fragment object lacking the interval key.

Common situations: Docs examples that elide interval for brevity being copied verbatim; assuming interval defaults to 0 when absent.

Related errors


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