Repository navigation
mwan3: prevent NaN in rpcd status for empty state files - #30800
Open
ZyPulse-zy wants to merge 1 commit into
Open
ZyPulse-zy wants to merge 1 commit into
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.
github-actions Bot
pushed a commit
to ZyPulse-zy/openwrt-bot-worker
that referenced
this pull request
Oct 17, 2026
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>
openwrt-ai
reviewed
Oct 18, 2026
BKPepe
pushed a commit
to openwrt/openwrt-bot-worker
that referenced
this pull request
Oct 18, 2026
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
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 earlier Makefile formality finding confused 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 in openwrt-bot-worker #122 has now been merged, and its upstream Worker deployment succeeded. The rebased revision passed 1088 unit tests, including the 10 source-path regressions, and replaying this actual mwan3 Makefile resolved the misclassification. The old failing check predates that fix; this PR's package source and install paths are unchanged.