m1k1o/neko · error

stream-src not enabled

Error message

stream-src not enabled

What it means

StreamSrcManagerCtx.Start returns 'stream-src not enabled' when manager.enabled is false. Like the screencast manager, a stream-src constructed as disabled refuses to create its pipeline. The check happens before codec/pipeline lookup, right after the already-exists check.

Source

Thrown at server/internal/capture/streamsrc.go:123

}

func (manager *StreamSrcManagerCtx) Codec() codec.RTPCodec {
	manager.pipelineMu.Lock()
	defer manager.pipelineMu.Unlock()

	return manager.codec
}

func (manager *StreamSrcManagerCtx) Start(codec codec.RTPCodec) error {
	manager.pipelineMu.Lock()
	defer manager.pipelineMu.Unlock()

	if manager.pipeline != nil {
		return types.ErrCapturePipelineAlreadyExists
	}

	if !manager.enabled {
		return errors.New("stream-src not enabled")
	}

	found := false
	for codecName, pipeline := range manager.codecPipeline {
		if codecName == codec.Name {
			manager.pipelineStr = pipeline
			manager.codec = codec
			found = true
			break
		}
	}

	if !found {
		return errors.New("no pipeline found for a codec")
	}

	var err error

View on GitHub (pinned to b0f01cedea)

Solutions

  1. Enable stream-src in the server configuration before calling Start
  2. Have the client request the stream-src capability so the manager is created enabled
  3. If intentionally disabled, surface a user-facing 'streaming unavailable' state instead of retrying

Example fix

// before
if err := streamSrc.Start(codec); err != nil { return err } // stream-src not enabled
// after
if !streamSrcEnabled {
    return fmt.Errorf("cannot start stream-src: feature disabled in config")
}
if err := streamSrc.Start(codec); err != nil { return err }
Defensive patterns

Strategy: validation

Validate before calling

if !cfg.StreamSrc.Enabled {
    return errors.New("stream-src disabled; cannot start")
}
if err := streamSrc.Start(codec); err != nil { return err }

Try / catch

if err := streamSrc.Start(codec); err != nil {
    if err.Error() == "stream-src not enabled" {
        return fmt.Errorf("streaming unavailable: %w", err) // non-retryable; fix config
    }
    return err
}

Prevention

When it happens

Trigger: Calling Start() on a stream-src manager whose configuration has streaming source disabled; enabling logic never ran (config flag off or client did not request stream-src).

Common situations: Server started without stream-src enabled but a client attempts to start the source stream; environment where streaming is deliberately disabled (e.g. no capture device); config resets after upgrades.

Related errors


AI-assisted analysis of m1k1o/neko@b0f01cedea (2026-09-01). Data as JSON: /api/errors/1acc97b4887765c6. Report an issue: GitHub.