fix(VideoManager): redact stream URLs in diagnostics - #14727
Conversation
Codecov Report❌ Patch coverage is ❌ Your patch check has failed because the patch coverage (1.00%) is below the target coverage (30.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## master #14727 +/- ##
==========================================
+ Coverage 25.47% 32.64% +7.17%
==========================================
Files 769 784 +15
Lines 65912 67593 +1681
Branches 30495 31311 +816
==========================================
+ Hits 16788 22067 +5279
+ Misses 37285 30657 -6628
- Partials 11839 14869 +3030
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 470 files with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
Build ResultsPlatform Status
All builds passed. Pre-commit
Pre-commit hooks: 0 passed, 0 failed, 0 skipped. Test Resultslinux-coverage-integration: 37 passed, 0 skipped Code CoverageCoverage: 69.4% No baseline available for comparison Artifact Sizes
Updated: 2026-07-31 02:47:57 UTC • Commit: 8e06c53 • Triggered by: Windows |
|
Coverage clarification for exact head |
|
Review comments: Design / debuggability1. Over-redaction will hurt video debugging — the biggest concern. The helper strips path, query, and fragment, not just credentials. The RTSP path is the stream identity, not a secret in the common case: the #1 RTSP failure mode is a wrong mount point ( 2. Concrete regression: 3. VideoSettings changes remove the URL entirely. In the VideoSettings.cc hunks, "Testing configuration for UDP Stream:" loses its value completely. A UDP URL is Missed coverage4. src/Camera/VehicleCameraControl.cc lines 1820 and 1832 log raw 5. DOT pipeline dumps still leak credentials. Helper implementation6. Silent query/fragment removal is asymmetric with path handling. Path redaction leaves a visible 7. Dead-store no-op in the helper: Log severity8. GstVideoReceiver9. Tests10. Single monolithic test slot. QGCNetworkHelperTest follows one-slot-per-behavior; the new 11. Missing test cases: empty string, bare SummaryComments 1–3 are the substantive objections (path/query stripping, |
|
Most of the code review is relevant with my main concern being redacting urls to the point of making remote debugging impossible or less useful. |
fd4a35f to
2d149ee
Compare
|
Thanks for the detailed review. I addressed the substantive points in
I left the optional cached redacted-URI suggestion out to avoid adding synchronized state for disabled debug categories; it can remain a separate optimization if profiling ever justifies it. The rebased exact-head workflows are running now. |
|
Small follow-up at |
|
Exact-head CI caught one consistency gap from the severity change: the existing negative UDP/TCP source-factory tests still ignored these diagnostics as |
Description
Several QGC-owned video diagnostics can expose URL credentials or query and fragment secrets. This change centralizes a logging-safe URL representation while preserving the connection details needed for field debugging.
The helper:
REDACTED;REDACTEDmarker;5600andcamera.local:5600useful; andThe helper is used by VideoSettings, VideoManager, VehicleCameraControl, the GStreamer source factory, and GstVideoReceiver. QGC-generated pipeline DOT files now retain topology, caps, media types, and states while omitting element property values, which can contain source credentials. Bad operator-entered stream URLs are reported as warnings rather than critical failures.
This does not change stream configuration, receiver lifecycle, or video transport behavior.
Type of Change
Testing
Local checks on exact head
8e06c53cc545bd43528ddab8d8082580d664b7ee:git diff --check.The same cases are split into five focused slots in a dedicated no-I/O
QGCNetworkRedactionTestregistered asUnit/Utilities, so QGC's normal CI executes them.GStreamerTestcovers the DOT-property boundary. Exact-head QGC CI is complete: Linux x64/arm64 release builds, unit and integration tests, ASan/UBSan, coverage thresholds, Windows, macOS, iOS, Android, Docker, custom-plugin, and CodeQL checks passed. Linux evidence: run 30598293911.Platforms Tested
Flight Stacks Tested
Not applicable; this change does not enter a vehicle command path.
Screenshots
Not applicable; there is no UI change.
Checklist
Related Issues
This is the first focused replacement for draft #13594. The HTTP MJPEG and WebSocket JPEG transports remain separate in #14730 and #14731.
By submitting this pull request, I confirm that my contribution is made under the terms of the project's dual license (Apache 2.0 and GPL v3).