BUGFIX: Companion packet timestamp mismatch trips replay protection #1299
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.
Initial login packet and REQ packets use the timestamp from the companion node's RTC. Most subsequent text packets using the timestamp from the companion node's mobile app. Drift between these timestamps can trip the replay protection and cause timeouts after login on the client side.
Fix changes this logic to send the node's RTC timestamp for TXT_TYPE_CLI_DATA messages instead of the timestamp from the app (matches the sendRequest() code logic).
Ideally we would use the same timestamp everywhere and this does work in my testing, however it breaks the "Heard repeats" in the mobile app (presumably because the timestamp is part of the packet hash and the heard packet doesn't match the one the app thinks was sent).