3.1.5.1 Processing Non-Exclusive Get Requests

A client that uses a state server makes either an exclusive or a non-exclusive request to a state server implementation for session state data.<6>

For a non-exclusive request, the client sends an HTTP request that uses the message format that is specified in section 2.2.5.1. A state server implementation MUST attempt to retrieve the session state data that corresponds to the unique identifier that is contained in the combination of application-identifier, appdomain-identifier, and session-identifier. A state server MUST not interpret these values or assign any specific relevance to them. Rather, a state server implementation MUST simply use the combination of those values as the unique identifier for retrieving any previously stored session state that is associated with the combination of those identifiers.

The state server MUST send a response back to the client by using one of the message formats that are specified in section 2.2.5.2.

If the state server finds session data that is associated with the requested identifier, and the data is not locked by another request, it MUST reply to the client web server by using the response-ok message, as specified in section 2.2.5.2.

As part of this message, the state server MUST include the action-flags information if set during a previous set operation, as specified in section 2.2.5.5, the client web server sent extra-flags to the state server with a value of "1".  The state server MUST also reset the action-flags value stored by the state server to a value of "0".

If the state server finds session data that is associated with the requested identifier, but the session data is locked by another request (for example, two or more clients are simultaneously running and each client is using the same identifier), the state server MUST respond with a response-locked message, as specified in section 2.2.5.2. The response-locked message contains a lock-age (section 2.2.3.10) and lock-date (section 2.2.3.8) in addition to the value of the current lock-cookie (section 2.2.3.9). The lock-cookie is an integer representation of the current lock. The lock-date value MUST contain the date and time that the existing lock was placed on the session state data. The lock-age header MUST contain a representation for the age of the current lock.

If the state server cannot find any session data that is associated with the requested identifier, the state server MUST respond with a response-not-found message, as specified in section 2.2.5.2.

The response-bad-request message, as specified in section 2.2.5.2, is conceptually equivalent to throwing an exception. The session state server MUST send this message if something goes wrong and the server is unable to process the request.