shadow1ng/fscan · error
fscan: result handler is required
Error message
fscan: result handler is required
What it means
Guard in Scanner.scanEach: a nil ResultHandler callback was passed, but the streaming API requires one to deliver each Result; without it results would be silently dropped. Use Scan (collectReport) if no callback is wanted.
Source
Thrown at pkg/fscan/scanner.go:194
results []Result
)
stats, err := s.scanEach(ctx, opts, func(result Result) error {
mu.Lock()
results = append(results, result)
mu.Unlock()
return nil
}, targets...)
results = snapshotResults(&mu, results)
return ScanReport{
Results: results,
Summary: SummarizeResults(results),
Stats: stats,
}, err
}
func (s *Scanner) scanEach(ctx context.Context, opts scanOpts, handle ResultHandler, targets ...Target) (ScanStats, error) {
if handle == nil {
return ScanStats{}, fmt.Errorf("fscan: result handler is required")
}
if ctx == nil {
ctx = context.Background()
}
if len(targets) == 0 {
targets = s.config.Targets
}
if err := validateConfig(s.config, targets); err != nil {
return ScanStats{}, err
}
ctrl := opts.controller
if ctrl == nil && s.config.OnProgress != nil {
ctrl = newScanController()
}
ctx, cancel := context.WithCancel(ctx)
defer cancel()View on GitHub (pinned to 95cc12e753)
Solutions
- Pass a non-nil func(Result) error to ScanEach
- Use Scanner.Scan which supplies its own collector and returns a ScanReport
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at pkg/fscan/scanner.go:194 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of shadow1ng/fscan@95cc12e753 (2026-09-06).
Data as JSON: /api/errors/1bdf01d4a9a58934.
Report an issue: GitHub.