Feature #185
Client/Server Protocol Compatibility
| Status : | Closed | Start : | 08/03/2009 | |
| Priority : | Normal | Due date : | ||
| Assigned to : | - | % Done : | 0% |
|
| Category : | UPC | |||
| Target version : | Union 1.0 Alpha 3 | |||
Description
Problem
When an old client (perhaps held in a web browser's cache) connects to a newer server that no longer supports the old client's protocol, the old client cannot communicate properly with the newer server.
Solution
Each client should report the version of the protocol it uses. The server then should decide whether the client's protocol-version is compatible with the server's protocol-version, according to the following rules:
- Given a protocol version number structured as A.B.C (for example, 1.2.1)...
- If the server's A and the client's A do not match, or the server's B and the client's B do not match, the server should send an "incompatible" message and disconnect the client.
- If the server's C and the client's C do not match, the server should send an "incompatible" message, but should not disconnect the client. The client application must decide whether to stay connected. The application may wish to stay connected if it does not use any features that differ between the client's protocol-version and the server's protocol-version.
- If the server and client's A, B, and C all match, the server should send a compatible message.
Implementation
This feature requires the following UPC specifcation changes:
- u65 to add new argument: protocolVersion.
- u66 to add new argument: protocolVersion.
- u66 to add new argument: protocolCompatible. values: true or false. if false, the u66 message is immediately followed by a server-initiated disconnection.
History
Also available in: Atom