Repository navigation
mwan3: prevent NaN in rpcd status for empty state files - #30800
ZyPulse-zy wants to merge 1 commit into
Conversation
An empty mwan3track state file converts to NaN in get_int(). This propagates through get_x_time() and the interface status payload, allowing invalid numeric values in RPC replies during startup or partial state updates. Default failed integer conversions to zero, preserving the previous shell handler's empty-state behavior. Cover all integer/time fields and tracked-IP metrics by loading the installed rpcd implementation with isolated filesystem, UCI and ubus fixtures in the package test. Fixes: openwrt#29653 Signed-off-by: Yuen Su <zypulsecore@gmail.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
Formality Check: FailedWe checked this pull request against the contribution guidelines. Here is what needs your attention: 🛑 CRITICAL ERRORS
Tip Do not close this pull request to make corrections. Instead, modify your existing commits (e.g. Something broken? Consider reporting an issue. |
An extensionless rpcd payload and its UCI configuration can share the same basename. Matching all lines containing that basename includes the sibling's conffiles entry and falsely rejects the payload as UCI. Resolve explicit install commands by the package-relative source path, joining continued recipe lines before inspecting their literal package-root destination. Keep the existing fallback when the destination cannot be resolved, and retain validation when a source also installs into etc/config. Reproduces the false positive on openwrt/packages#30800. Add ten regression cases for same-name siblings, continuations, quoting, source boundaries, unknown destinations and config installations. Signed-off-by: Yuen Su <zypulsecore@gmail.com>
An empty mwan3track state file reaches
int('')inget_int()and becomes NaN. The value then propagates into interface age, counters or tracked-IP metrics in the rpcd response, breaking JSON consumers such as LuCI's batched status request.Default failed integer conversions to zero, restoring the previous shell handler's empty-state behavior. Add a package regression that loads the installed rpcd implementation with isolated filesystem, UCI and ubus fixtures. Bump the package release.
Fixes #29653. Maintainer: @feckert.
Validation:
mwan3-2.12.2-r3.apkin a separate AArch64/musl OpenWrt SDK and reran the regression against the plugin extracted from that package: 63 checks passed.git diff --check, passed.Runtime tests use fixtures for external I/O; a live ubus daemon and router deployment were not used. AI assistance was used for implementation and test development.
Checker follow-up: the current Makefile formality finding confuses the extensionless rpcd plugin with its same-named UCI sibling. The Makefile and extracted APK install the plugin under
/usr/share/rpcd/ucode/. The source-path inference fix is proposed in openwrt/openwrt-bot-worker#122, with a reproduction using this actual Makefile, 10 regression cases and 753 passing tests.