3.1.5.5 Receiving a Describe Response

The client MUST first follow the steps that are specified in section 3.1.5.3.

If the value of the Client-Token variable is "WMCacheProxy", the HTTP status code in the response is equal to 400, and the server version is less than 9.0 (according to the Server-Version variable), the client MUST set the value of the Client-Token variable to "NSServer" and resubmit the Describe request. To resubmit the Describe request, the client MUST establish a new TCP connection to the server. The client MUST then continue by following the steps specified in section 3.1.4.2.1.

If the response contains an HTTP status code in the range of 300–305, the server is requesting the client to connect to another server. The client MUST connect to the server that is specified in the response by following the rules in section 10.3 of [RFC2616]. This is a brief summary of those rules: If the status code is 305, the URL on the Location header ([RFC2616] section 14.30) is for a proxy server and the URL that is used in the Describe request MUST remain unchanged. For status codes 300–304, the URL on the Location header MUST replace the URL used in the Describe request. The client MUST close the current TCP connection and establish a new TCP connection to the server, or proxy server, as appropriate, depending on the status code. The client MUST then continue by following the steps defined in Sending the Describe Request (section 3.1.4.2.1)

Otherwise, if the HTTP status code indicates that the request succeeded, the client MUST perform the following steps:

  1. The variable Pipeline-Test-Allowed MUST be set to the value of the pipeline-experiment (section 2.2.1.4.15) token on the Pragma header. If that token is missing, the variable MUST be set to 0.

  2. If the Via header is present in the response and it indicates that the response was processed by an HTTP 1.0 proxy server, the client SHOULD set the value of the Pipeline-Test-Allowed variable to 0 as specified in [RFC2616] section 14.45.

  3. If the token packet-pair-experiment (section 2.2.1.4.14) is present on the Pragma header and its value is 1, the client MUST set the variable $P-Packets-Expected to 3 and MUST set the value of the Expected-Packets variable to $P and then process the rules in section 3.1.5.2.

  4. If the client specified the pipeline-experiment token in a request and the response does not include this token, or if the response specifies this token with a value of 0, the client MUST assume that the server does not accept pipeline requests.

  5. If the server product name is "Cougar" and the version number is greater than or equal to 9.0, according to the Server-Version variable, the client MUST set the value of the Expected-Packets variable to $M and then process the rules in section 3.1.5.2.

  6. If the server version number is greater than or equal to 9.0, the client MUST set the value of the Expected-Packets variable to $H, $M, and then process the rules in section 3.1.5.2.

  7. If the server version number is less than 9.0, the client MUST set the value of the Expected-Packets variable to $H and process the rules in section 3.1.5.2.