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
- Add an interval range in milliseconds, e.g. "interval": "10-20".
- Use "1-1" or a small fixed value if you want minimal delay between fragments.
- 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
- Treat interval as required once fragment exists (only MaxSplit is optional).
- Use "1-1" for near-zero deliberate delay.
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
- Length can't be empty
- Invalid PacketsFrom
- PacketsFrom can't be 0
- LengthMin can't be 0
- unsupported domain strategy: {}
AI-assisted analysis of XTLS/Xray-core@7d214f8b09 (2026-08-15).
Data as JSON: /api/errors/e09a326de16dda57.
Report an issue: GitHub.