app: show what the server reports as facts, not as inputs
The settings card offered three editable boxes and said nothing about the server itself — which addresses a test will actually use, on which ports, what it can measure. That is the part a person checks before trusting a result, and "which address did this come from" is precisely the question a report leaves open. The server now publishes it. The profile's targets carried one IPv4 and a TODO; it reports both families and both alternates, derived from the UDP listen spec rather than configured separately, so the list cannot drift from what is actually bound. No reservation means no alternate is claimed: announcing a second address as the RFC 5780 alternate when none was set aside would promise a redirect the server will not send. The app renders them read-only, in a panel visibly distinct from the fields above. An editable box that changes nothing is worse than no box, and these are facts to read rather than settings to apply. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
fe4ec23ba1
commit
c4f2a10790
@@ -29,6 +29,15 @@ data class Target(
|
||||
val id: String,
|
||||
val ip4: String? = null,
|
||||
val ip6: String? = null,
|
||||
/**
|
||||
* The second address, which RFC 5780 behaviour discovery redirects to.
|
||||
*
|
||||
* Worth surfacing rather than treating as an implementation detail: a report that says "the
|
||||
* server did not answer" means something different depending on which of its addresses was
|
||||
* asked, and an operator reading one needs to be able to tell.
|
||||
*/
|
||||
@SerialName("ip4_alt") val ip4Alt: String? = null,
|
||||
@SerialName("ip6_alt") val ip6Alt: String? = null,
|
||||
@SerialName("udp_port") val udpPort: Int = 0,
|
||||
@SerialName("tcp_port") val tcpPort: Int = 0,
|
||||
@SerialName("stun_port") val stunPort: Int = 0,
|
||||
|
||||
Reference in New Issue
Block a user