Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specify IANA-registered service name (MSC4040) #1624

Merged
merged 3 commits into from
Aug 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelogs/server_server/newsfragments/1624.deprecation
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Deprecate `matrix` SRV lookup steps during server discovery, as per [MSC4040](https://github.com/matrix-org/matrix-spec-proposals/pull/4040).
1 change: 1 addition & 0 deletions changelogs/server_server/newsfragments/1624.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add `matrix-fed` SRV lookup steps to server discovery, as per [MSC4040](https://github.com/matrix-org/matrix-spec-proposals/pull/4040).
33 changes: 29 additions & 4 deletions content/server-server-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,28 +148,45 @@ to send. The process overall is as follows:
Requests must be made with a `Host` header of
`<delegated_hostname>:<delegated_port>`. The target server must
present a valid certificate for `<delegated_hostname>`.
3. If `<delegated_hostname>` is not an IP literal and no
3. {{< added-in v="1.8" >}} If `<delegated_hostname>` is not an IP literal and no
`<delegated_port>` is present, an SRV record is looked up for
`_matrix-fed._tcp.<delegated_hostname>`. This may result in another
hostname (to be resolved using AAAA or A records) and port.
Requests should be made to the resolved IP address and port with
a `Host` header containing the `<delegated_hostname>`. The
target server must present a valid certificate for
`<delegated_hostname>`.
4. **[Deprecated]** If `<delegated_hostname>` is not an IP literal, no
`<delegated_port>` is present, and a `_matrix-fed._tcp.<delegated_hostname>`
SRV record was not found, an SRV record is looked up for
`_matrix._tcp.<delegated_hostname>`. This may result in another
hostname (to be resolved using AAAA or A records) and port.
Requests should be made to the resolved IP address and port with
a `Host` header containing the `<delegated_hostname>`. The
target server must present a valid certificate for
`<delegated_hostname>`.
4. If no SRV record is found, an IP address is resolved using CNAME, AAAA
5. If no SRV record is found, an IP address is resolved using CNAME, AAAA
or A records. Requests are then made to the resolve IP address
and a port of 8448, using a `Host` header of
`<delegated_hostname>`. The target server must present a valid
certificate for `<delegated_hostname>`.

4. If the `/.well-known` request resulted in an error response, a server is
4. {{< added-in v="1.8" >}} If the `/.well-known` request resulted in an error response, a server is
found by resolving an SRV record for `_matrix-fed._tcp.<hostname>`. This may
result in a hostname (to be resolved using AAAA or A records) and
port. Requests are made to the resolved IP address and port, with a `Host`
header of `<hostname>`. The target server must present a valid certificate
for `<hostname>`.

5. **[Deprecated]** If the `/.well-known` request resulted in an error response,
and a `_matrix-fed._tcp.<hostname>` SRV record was not found, a server is
found by resolving an SRV record for `_matrix._tcp.<hostname>`. This may
result in a hostname (to be resolved using AAAA or A records) and
port. Requests are made to the resolved IP address and port, with a `Host`
header of `<hostname>`. The target server must present a valid certificate
for `<hostname>`.

5. If the `/.well-known` request returned an error response, and the
6. If the `/.well-known` request returned an error response, and the
SRV record was not found, an IP address is resolved using CNAME, AAAA and A
records. Requests are made to the resolved IP address using port
8448 and a `Host` header containing the `<hostname>`. The target
Expand All @@ -191,6 +208,14 @@ mandated by [RFC2782](https://www.rfc-editor.org/rfc/rfc2782.html):
> the name MUST NOT be an alias (in the sense of RFC 1034 or RFC 2181)
{{% /boxes/note %}}

{{% boxes/note %}}
Steps 3.4 and 5 are deprecated because they use a service name not registered by IANA.
They may be removed in a future version of the specification. Server admins are encouraged
to use `.well-known` over any form of SRV records.

The IANA registration for port 8448 and `matrix-fed` can be found [here](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=matrix-fed).
{{% /boxes/note %}}

{{% http-api spec="server-server" api="wellknown" %}}

### Server implementation
Expand Down