3.4.5.1.2 Receiving a KeepAlive-GET-Request for Application Data

The server validates the KeepAlive-GET-Request message (see section 2.2.3.1) using the following procedure:

  1. The server MUST validate the KeepAlive-GET-Request-URI (see section 2.2.3.1.1) and extract the version, server name, virtual connection GUID, encapsulation type, content length, and Request ID. If the parsing fails, it is a protocol error and the server MUST close the connections (see section 3.4.4.1).

  2. The server SHOULD<33> check the KeepAlive-Encapsulation-Version and if the version does not equal the required value (see section 2.2.3.1.1.2), send a KeepAlive-Response with a status code of 400. See section 3.4.5.1.1.2.

  3. If the encapsulation type is not KeepAlive, it is a protocol error and the virtual connection MUST be closed.

  4. The server SHOULD<34> verify that the server name in the message equals its own name and close the virtual connection if they are not equal.

  5. The server SHOULD ignore Request ID

  6. The server MUST examine the Virtual-Connection-GUID. The Virtual-Connection-GUID SHOULD be bound in the VirtualConnectionGUIDList.

If any of the preceding validations fails, it is a protocol error, and the virtual KeepAlive connection MUST be closed (see section 3.4.4.1).

The GetSessionReady and the ServerOKtoSend state variables MUST be set to TRUE.

The server MUST follow section 3.4.4.3 to send a KeepAlive-GET-Response on the GET session if there is buffered application data to send to the client.

If there is no application data buffered, the server SHOULD wait for application data. The KeepAlive timer makes sure that there is always some data to be sent.