Skip to content

App: repeater admin lane follow-ups (slot token, tag race, test gaps, small cleanups) #518

Description

@MrAlders0n

Follow-ups from the repeater administrators review that are real but not urgent, all in lib/services/meshcore/connection.dart unless noted:

  • _endAdminCommand() in every admin command's finally is unconditional. In the one window the identical(...) guards exist for (a call parked on the sign gate, then abortPendingAdmin() freeing the slot, then a second call), the first call's unwind clears _adminCommandInFlight under the second. A slot token would close it. The session's busy flag keeps a third caller out today.
  • _binaryResponseTag is set after the SENT await. On TCP or USB serial, two frames decoded from one read arrive one microtask apart, so a BINARY_RESPONSE could in theory land before the tag and be logged as unsolicited, ending in a clean timeout. Seconds separate them in practice; worth a comment, not code.
  • resetPath and addContact share _adminOkCompleter. A straggler OK after a resetPath timeout could resolve a later addContact early.
  • ContactRecord does not assert publicKey.length == 32 or outPath.length == 64; a bad length mis-frames the add and the substring(0, 8) in the log line throws.
  • Untested paths: a malformed CONTACT frame being skipped, unsolicited CONTACTS_START / CONTACT drops, the short-SENT admin FormatException, dispose after SENT while awaiting a reply, and ClaimModule.run / NeighboursModule.run.
  • AppStateProvider still has its own private _hexToBytes for the portal nonce now that repeater_admin_models.dart exports a strict public one.
  • _TargetedDeps carries both hasRepeaters and repeaterCount; one is enough.
  • DEVELOPMENT.md: the provider bullet says passwords are "never sent"; they are sent to the repeater over the mesh, just never to the server. Say so.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions