forked from MirrorHub/synapse
Declare support for Matrix 1.6 (#15559)
Adds logging for key server requests which include a key ID. This is technically in violation of the 1.6 spec, but is the only way to remain backwards compatibly with earlier versions of Synapse (and possibly other homeservers) which *did* include the key ID.
This commit is contained in:
parent
808105bd31
commit
def480442d
4 changed files with 23 additions and 1 deletions
1
changelog.d/15559.feature
Normal file
1
changelog.d/15559.feature
Normal file
|
@ -0,0 +1 @@
|
|||
Advertise support for Matrix 1.6 on `/_matrix/client/versions`.
|
|
@ -79,6 +79,7 @@ class VersionsRestServlet(RestServlet):
|
|||
"v1.3",
|
||||
"v1.4",
|
||||
"v1.5",
|
||||
"v1.6",
|
||||
],
|
||||
# as per MSC1497:
|
||||
"unstable_features": {
|
||||
|
|
|
@ -34,6 +34,8 @@ class LocalKey(RestServlet):
|
|||
"""HTTP resource containing encoding the TLS X.509 certificate and NACL
|
||||
signature verification keys for this server::
|
||||
|
||||
GET /_matrix/key/v2/server HTTP/1.1
|
||||
|
||||
GET /_matrix/key/v2/server/a.key.id HTTP/1.1
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
|
@ -100,6 +102,15 @@ class LocalKey(RestServlet):
|
|||
def on_GET(
|
||||
self, request: Request, key_id: Optional[str] = None
|
||||
) -> Tuple[int, JsonDict]:
|
||||
# Matrix 1.6 drops support for passing the key_id, this is incompatible
|
||||
# with earlier versions and is allowed in order to support both.
|
||||
# A warning is issued to help determine when it is safe to drop this.
|
||||
if key_id:
|
||||
logger.warning(
|
||||
"Request for local server key with deprecated key ID (logging to determine usage level for future removal): %s",
|
||||
key_id,
|
||||
)
|
||||
|
||||
time_now = self.clock.time_msec()
|
||||
# Update the expiry time if less than half the interval remains.
|
||||
if time_now + self.config.key.key_refresh_interval / 2 > self.valid_until_ts:
|
||||
|
|
|
@ -126,6 +126,15 @@ class RemoteKey(RestServlet):
|
|||
self, request: Request, server: str, key_id: Optional[str] = None
|
||||
) -> Tuple[int, JsonDict]:
|
||||
if server and key_id:
|
||||
# Matrix 1.6 drops support for passing the key_id, this is incompatible
|
||||
# with earlier versions and is allowed in order to support both.
|
||||
# A warning is issued to help determine when it is safe to drop this.
|
||||
logger.warning(
|
||||
"Request for remote server key with deprecated key ID (logging to determine usage level for future removal): %s / %s",
|
||||
server,
|
||||
key_id,
|
||||
)
|
||||
|
||||
minimum_valid_until_ts = parse_integer(request, "minimum_valid_until_ts")
|
||||
arguments = {}
|
||||
if minimum_valid_until_ts is not None:
|
||||
|
@ -161,7 +170,7 @@ class RemoteKey(RestServlet):
|
|||
|
||||
time_now_ms = self.clock.time_msec()
|
||||
|
||||
# Map server_name->key_id->int. Note that the value of the init is unused.
|
||||
# Map server_name->key_id->int. Note that the value of the int is unused.
|
||||
# XXX: why don't we just use a set?
|
||||
cache_misses: Dict[str, Dict[str, int]] = {}
|
||||
for (server_name, key_id, _), key_results in cached.items():
|
||||
|
|
Loading…
Reference in a new issue