Skip to content

app: a repeater answers regions, owner and clock without login, and autoping never asks #552

Closed

Description

@khagele

Component: app

Supersedes #480: its regions scope moves in here, joined by the owner ask and the scheduling.

Problem

A simple_repeater answers three anonymous request kinds without a login: regions, owner info, clock. One shared bucket, 4 answers per 180 s (anon_limiter, examples/simple_repeater/MyMesh.cpp:868). Every answer is a zero-hop transmission from that repeater: a real measurement at our position, plus metadata we cannot get any other way.

Autoping never touches that bucket. A cycle is a Discover broadcast plus trace-pings, to the selected targets or to the sweep (#484). The regions ask was specified in #480. Its scheduling lived in #479, which closed with the sweep built and the anon rotation unbuilt. The owner ask was never specified anywhere.

Expected

The probe (from #480, unchanged): port regionreq.js from efiten/coredrive-rx, which runs this in the field. Framing [57][pubkey:32][0x01][reply_path_len], the contact-path force-to-direct dance with restore on failure, NUL-padding trim, truncation flag at >= 139 bytes. The reply carries the repeater clock plus the region CSV, so regions and clock are one ask.

The owner ask: same anon bucket, its own request type. Byte layout verified against MeshCore firmware before building, per AGENTS.md §7. coredrive-rx is the first place to look.

Scheduling: fold anon asks into the autoping rotation. The trace-ping stays every cycle. An anon ask fires at most once per 60 s per target: the bucket refills at 4 per 180 s, and asking faster is refused airtime. The sweep stays trace-only: anon asks go to selected targets, where the answer has a reader.

Storage: answers stored per node, as #480 specified. Rendering and publishing stay out; the consumers are #375 and #554.

Acceptance

  • Unit tests on framing and parser, including a NUL-padded payload and a CSV at the truncation floor.
  • The out-path override is restored after the ask, on the failure path too.
  • A request is only built for a full 64-hex pubkey.
  • The rotation never exceeds one anon ask per 60 s per target, and the trace cadence is unchanged.
  • Autoping off means nothing transmits, exactly as today.

Related

Activity

  1. added 2 commits that reference this issue on Sep 25, 2026
    9c77066
    27c41df
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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions