3.2.5.1.1 Receiving a LongLived-GET-Request

Upon receipt of a LongLived-GET-Request (see section 2.2.2.1), the server transitions the GetSessionState to 'Connected'. If the PostSessionState is 'Connected', the ConnectionState transitions into the 'Connected' state. If the PostSessionState is uninitialized, the ConnectionEstablishment timer is started.

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

  1. The server MUST validate the LongLived-GET-Request-URI (see section 2.2.2.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.2.4.1). The content length is saved in the variable ConnectionContentLength.

  2. The server SHOULD<18> check the LongLived-Encapsulation-Version and, if the value does not equal the required value (see section 2.2.2.1.1.1), send a LongLived-GET-Response with a status code of 400. See section 3.2.5.1.1.2.

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

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

  5. The server SHOULD ignore the Request ID.

  6. The server MUST examine the Virtual-Connection-GUID to validate that the LongLived-GET-Request is a new connection request. Virtual-Connection-GUID SHOULD be maintained in the VirtualConnectionGUIDList. If the PostSessionState is 'Connected', the virtual connection GUID SHOULD be found in the VirtualConnectionGUIDList. If the PostSessionState is uninitialized, the Virtual-Connection-GUID SHOULD be added to the VirtualConnectionGUIDList. If the Virtual-Connection-GUID is found and the PostSessionState is not 'Connected', this is a protocol error. See section 3.2.5.1.1.2.

If the PostSessionState is not 'Connected', the processing stops here.

If the PostSessionState is 'Connected', the virtual connection is established. The server transitions GetSessionState, PostSessionState and ConnectionState to the 'Established' state.

The ConnectionEstablishment timer is stopped and no timer expiration processing is performed.

The server as described in section 3.2.5.1.1.1 to complete the handshake by sending a LongLived-GET-Response.