The reqwest::Client was constructed with no timeout, so any hung NVD/OSV request could stall the scan indefinitely
With 1098 SBOM entries producing hundreds of CVE alerts, sequential NVD enrichment calls (called serially in a loop) would hang forever if NVD rate-limited or dropped a connection
Adds 30s per-request timeout (10s connect) at the client level
Adds 10-minute overall timeout wrapper around the CVE scanning stage as a defense-in-depth so even unexpected hangs can't block the pipeline
Test plan
Trigger scan on a large repo (1000+ deps) and verify it progresses past Stage 3 CVE Scanning
Verify that scan continues even if NVD/OSV is slow
## Summary
- The `reqwest::Client` was constructed with no timeout, so any hung NVD/OSV request could stall the scan indefinitely
- With 1098 SBOM entries producing hundreds of CVE alerts, sequential NVD enrichment calls (called serially in a loop) would hang forever if NVD rate-limited or dropped a connection
- Adds 30s per-request timeout (10s connect) at the client level
- Adds 10-minute overall timeout wrapper around the CVE scanning stage as a defense-in-depth so even unexpected hangs can't block the pipeline
## Test plan
- [ ] Trigger scan on a large repo (1000+ deps) and verify it progresses past Stage 3 CVE Scanning
- [ ] Verify that scan continues even if NVD/OSV is slow
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Without a timeout on the reqwest client, sequential NVD API calls
for each CVE alert could hang indefinitely. With 1098 SBOM entries
producing hundreds of alerts, this would stall the scan pipeline.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sharang
merged commit e67a13535a into main2026-05-13 07:30:27 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
reqwest::Clientwas constructed with no timeout, so any hung NVD/OSV request could stall the scan indefinitelyTest plan
🤖 Generated with Claude Code