diff --git a/specs/globaldisco-v3.rst b/specs/globaldisco-v3.rst index 42da4be1e..019aa73a6 100644 --- a/specs/globaldisco-v3.rst +++ b/specs/globaldisco-v3.rst @@ -7,17 +7,16 @@ Announcements ------------- A device should announce itself at startup. It does this by an HTTPS POST to -the announce server URL (with the path usually being "/", but this is of -course up to the discovery server). The POST has a JSON payload listing direct -connection addresses (if any) and relay addresses (if any):: +the announce server URL. Standard discovery currently requires the path to be +"/v2/", yet this can be up to the discovery server. The POST has a JSON payload +listing connection addresses (if any):: { - direct: ["tcp://192.0.2.45:22000", "tcp://:22202"], - relays: [{"url": "relay://192.0.2.99:22028", "latency": 142}] + addresses: ["tcp://192.0.2.45:22000", "tcp://:22202", "relay://192.0.2.99:22028"], } -It's OK for either of the "direct" or "relays" fields to be either the empty -list (``[]``), ``null``, or missing entirely. An announcment with both fields missing +It's OK for the "addresses" field to be either the empty list (``[]``), +``null``, or missing entirely. An announcement with the field missing or empty is however not useful... Any empty or unspecified IP addresses (i.e. addresses like ``tcp://:22000``, @@ -50,7 +49,7 @@ Queries Queries are performed as HTTPS GET requests to the announce server URL. The requested device ID is passed as the query parameter "device", in canonical -string form, i.e. ``https://announce.syncthing.net/?device=ABC12345-....`` +string form, i.e. ``https://announce.syncthing.net/v2/?device=ABC12345-....`` Successful responses will have status code ``200`` (OK) and carry a JSON payload of the same format as the announcement above. The response will not contain diff --git a/specs/localdisco-v3.rst b/specs/localdisco-v3.rst index a5c53a204..ffa026d3d 100644 --- a/specs/localdisco-v3.rst +++ b/specs/localdisco-v3.rst @@ -70,12 +70,6 @@ The Announcement packet has the following structure:: \ Zero or more Address Structures \ / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Number of Relays | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - / / - \ Zero or more Relay Structures \ - / / - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Address Structure: @@ -89,20 +83,6 @@ The Announcement packet has the following structure:: / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - Relay Structure: - - 0 1 2 3 - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Length of URL | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - / / - \ URL (variable length) \ - / / - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Latency | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - The corresponding XDR representation is as follows (see `RFC4506 `__ for the XDR format): @@ -117,21 +97,15 @@ The corresponding XDR representation is as follows (see struct Device { opaque ID<32>; Address Addresses<16>; - Relay Relays<16>; } struct Address { string URL<2083>; } - struct Relay { - string URL<2083>; - int Latency; - } - In the ``Announce`` structure field ``Magic`` is used to ensure -a correct datagram was received and MUST be equal to ``0x9D79BC40``. +a correct datagram was received and MUST be equal to ``0x7D79BC40``. The first Device structure contains information about the sending device. The following zero or more Extra devices contain information @@ -141,11 +115,6 @@ In the ``Device`` structure, field ``DeviceID`` is the SHA-256 (32 bytes) of the device X.509 certificate, as explained in section *Device ID*. -For each ``Address`` and ``Relay`` the ``URL`` field contains the actual -target address. Direct connections (the ``Address`` list) will -typically have the ``tcp://`` scheme. Relay connections will typically use the -``relay://`` scheme. - -The ``Latency`` field contains the approximate latency for a TCP handshake -(i.e. three packet round trips) between the other device and the relay, in -milliseconds. +For each ``Address`` the ``URL`` field contains the actual target address. +Direct connections will typically have the ``tcp://`` scheme. Relay connections +will typically use the ``relay://`` scheme.