[Bug]: Is the upgrade scenario for packets with a higher hop_limit working? #9419
Replies: 4 comments 6 replies
|
@GUVWAF @h3lix1 @erayd |
Testing SetupJust reproduced my setup from the original post, with minor tweaks. The issue still persists, you can see in the logs R rebroadcasts the message with the lower The firmware I'm using should be the latest stable release (2.7.15.567b8ea Beta) the last commit is d18f3f7a. Links to code are now specifically to this commit.
Inserted here, replacing Here, before LogsAs you can see below I added logs for Logs for R:Logs for C2: |
|
I think I see what's going wrong here, and I have to blame myself. The firmware/src/mesh/PacketHistory.h Lines 22 to 23 in 5dd06ed Hence we shouldn't be checking for firmware/src/mesh/PacketHistory.cpp Line 93 in 5dd06ed But rather use the |
|
This has been fixed here so I will close this. |
Uh oh!
There was an error while loading. Please reload this page.
Category
Other/Routing
Hardware
Not Applicable/Irrelevant
Is this bug report about any UI component firmware like InkHUD or Meshtatic UI (MUI)?
Firmware Version
> v2.7.11.ee68575 ?
Description
This pull request introduces an upgrade scenario, for rebroadcasters with a pending packet in the queue, which then receive a duplicate of said packet with a higher remaining
hop_limit. However, I was not able to recreate this scenario, even with artificially high wait times for a rebroadcaster and then inserting a duplicate package with a higherhop_limit. Instead, incoming duplicate packets with a higherhop_limitare ignored.I'm not 100% sure this is a bug and not me misunderstanding what the upgrade scenario is supposed to do. Hence, the discussion and not a bug report issue. Here's what looks weird/wrong to me:
The method
shouldFilterReceived(...)inFloodingRouter.cpp``/NextHopRouter.cpp`` handles incoming duplicate messages: HerewasUpgradedis initialized as `false` and then passed to `PacketHistory.cpp` by calling `wasSeenRecently(...)`.In
PacketHistory.cpp-wasSeenRecently(...): The upgrade scenario should be handled here. As far as I can tell, up to this pointwasUpgradedhas not been touched again.Here's what looks weird to me (still in
wasSeenRecently(...)): Why iswasUpgradedset totruein line 96, if this branch the code can only execute ifwasUpgradedis alreadytruein line 93? I assumewasUpgradedis stillfalse, therefore the upgrade scenario never triggers?If I am misunderstanding the upgrade scenario an explanation would be appreciated :)
Relevant log output
All reactions