Skip to content

Commit 953d012

Browse files
Handle NONE errorReason in onResponseTraceRoute and add regression test
ROUTING_APP with errorReason NONE is an ACK (success), not an error. Only print failure message for non-NONE error reasons. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent c71d3df commit 953d012

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

meshtastic/mesh_interface.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,8 @@ def onResponseTraceRoute(self, p: dict):
689689
"""on response for trace route"""
690690
if p["decoded"]["portnum"] == "ROUTING_APP":
691691
error = p["decoded"]["routing"]["errorReason"]
692-
print(f"Traceroute failed: {error}")
692+
if error != "NONE":
693+
print(f"Traceroute failed: {error}")
693694
self._acknowledgment.receivedTraceRoute = True
694695
return
695696

meshtastic/tests/test_mesh_interface.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,3 +777,23 @@ def test_onResponseTraceRoute_routing_error(capsys):
777777
assert iface._acknowledgment.receivedTraceRoute is True
778778
out, _ = capsys.readouterr()
779779
assert "Traceroute failed: MAX_RETRANSMIT" in out
780+
781+
782+
@pytest.mark.unit
783+
@pytest.mark.usefixtures("reset_mt_config")
784+
def test_onResponseTraceRoute_routing_none(capsys):
785+
"""Test that onResponseTraceRoute does not print error for ROUTING_APP with NONE errorReason."""
786+
iface = MeshInterface(noProto=True)
787+
788+
packet = {
789+
"decoded": {
790+
"portnum": "ROUTING_APP",
791+
"routing": {"errorReason": "NONE"},
792+
}
793+
}
794+
795+
iface.onResponseTraceRoute(packet)
796+
797+
assert iface._acknowledgment.receivedTraceRoute is True
798+
out, _ = capsys.readouterr()
799+
assert "Traceroute failed" not in out

0 commit comments

Comments
 (0)