-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Servers want to be able to require clients to install specific versions of specific plugins.
The server's list of plugins is provided in the query payload, and each entry has a required: bool.
Clients must then install every plugin that is required, with a version matching a semver tilde spec (major and minor must be equal, patch is ignored). This way, plugins can have breaking codec changes in minor versions.
However, as a silly preventative measure for the plugin set changing in the time between the query and the client connecting (that maybe could be postponed), the server sends a hash of the required plugin set in the query payload, and the client then sends it back while connecting to a session. If they don't match, the client disconnects with an error, to avoid weird bugs due to mismatched plugin versions (this also happens with PVNs).
Unresolved:
- Do we need a hash? (in this PV? postpone?)
- Could we just send the entire plugin set json instead? (hash is supposed to avoid this cuz plugin sets may get large)
- How is the hash calculated?
- Can clients calculate their own hashes (or is hash calculation server impl specific)?
- How big is the hash? (32 bytes?)