3.1.5.2 Receiving a PushStart Response

The client MUST verify that the response adheres to the syntax specified in section 2.2.2.2.

If the HTTP status code in the response is 401, the server requires access authentication. Status code 407 means that a proxy server requires access authentication. The rules for access authentication as specified in [RFC2616] section 11 MUST be followed. If the value of the Length-Remaining variable in the abstract data model is greater than zero, the client MUST close the TCP connection. Otherwise, the client SHOULD keep the TCP connection open because it will be needed to resubmit the request. When the client is ready to resubmit the HTTP request with the authentication credentials that the server requested, the HTTP request MUST be sent on the same TCP connection on which the 401 or 407 response was received, unless that TCP connection has been closed. If the TCP connection has been closed, the client MUST establish a new TCP connection to the server and send the HTTP request on that connection. When resubmitting the request, the client MUST follow the steps specified in section 3.1.4.2.1.<5>

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

  1. The client MUST inspect the Server header in the response. If the Server header is missing, or if the server-token parameter on the Server header does not match any of the values used by this protocol (as specified in [MS-WMSP] section 2.2.1.5), the server is not compatible with the Windows Media HTTP Push Distribution Protocol and is probably a regular HTTP web server. Because this protocol does not interoperate with incompatible servers, this incompatibility MUST be treated as an error and reported as such to the higher layer.

  2. If the Set-Cookie header is present in the response, the value of the Push-ID variable in the abstract data model MUST be set to the value of the push-id cookie. Any other cookies specified SHOULD be saved for inclusion in the Cookie header in subsequent requests.

  3. If the Via header (as specified in [RFC2616] section 14.45) is present in the response, the value of the UsingProxy flag in the abstract data model MUST be set to one.

    Note Proxy servers that only support HTTP 1.0 are not likely to send the Via header.

  4. The client MUST send a PushStart request  to the server, as specified in section 3.1.4.2.1.