fix: make Quad9 analyzers and YARA updater resilient to network errors #3099
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR addresses CI test failures caused by network-related errors in the test environment. The CI environment may not have outbound network access, causing tests to fail when analyzers try to contact external services.
Changes
Quad9 DNS Resolver (
quad9_dns_resolver.py):httpx.Clientas a context manager to prevent resource leakshttpx.ConnectError,httpx.RequestError, andhttpx.HTTPStatusErrorQuad9 Malicious Detector (
quad9_malicious_detector.py):httpx.Clientas a context managerConnectError,RequestError,HTTPStatusError)False(not malicious) when network is unavailable instead of crashingYARA Scan Updater (
yara_scan.py):zipfile.BadZipFileexception when downloaded archive is corruptedrequests.RequestExceptionfor network failures during downloadType of change
Checklist
developBlack,Flake,Isort) gave 0 errorsTesting
These changes allow the following tests to pass in CI environments without outbound network access:
test_yara_updater(handles corrupt/missing zip files gracefully)The analyzers now degrade gracefully when network is unavailable, returning empty/false results instead of raising unhandled exceptions.