Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

There are a few steps that need to be followed when connecting a client to server running the protobuf interface.

Binary Negotiation

After connecting to the server (and doing any socket level security negotiation such as SSL), the client will need to send a single byte to identify the protocol they are using.  For the protobuf protocol this byte should be 110.  Additionally once the client has identified that they'll be communicating via protobuf, they'll need to send one more byte describing the major version of the protobuf protocol they'll be speaking.  This will provide the server with enough information to exchange a protobuf handshake message with the client.

Handshake

Version Identification

The version identification messages are The handshake message is used to fully establish the major and minor version of the protocol in use on the connection. The first message sent from a client to a server must be a handshakeNewConnectionClientVersion. Once the server accepts the client's handshakeversion, it will guarantee that it's its response messages match the client's protocol version, regardless of the version of protobuf being run on the server.

...

If a server does not require authentication, the client can immediately start sending region operations and is assumed to be authorized for any operation.  If the client tries to authenticate on such a server, it will respond with a AUTHENTICATION_NOT_SUPPORTED error.

Timeouts

The current behavior of the server is that when clients have not sent a message for a minute, the server will be closed. This behavior may change in the future. The currently recommended behavior for clients is to reconnect when a connection is closed.