3.1.5.1 Sending a Request (All Request Types)

This section specifies common steps that MUST be performed whenever the client sends a request of any of the types, as specified in section 2.2.7, to the server.

If the KeepAlive timer is running, it MUST be restarted (reset).

The request sent by the client MUST NOT specify any of the headers and tokens as specified in section 2.2.7 that are defined only for use in responses.

All headers that are specified in [RFC2326] section 12 that are defined as mandatory for requests MUST be included in the request.

The client MUST specify the User-Agent (section 2.2.6.12) header in the request. The client-token syntax element on the User-Agent header MUST be set to "WMCacheProxy" if the client is acting as a caching proxy server. If the client is a server that will relay the content to one or more other clients without caching it, the client-token syntax element on the User-Agent header MUST be set to "WMServer". Otherwise, it MUST be set to "WMPlayer".

If the client-token syntax element on the User-Agent header is set to "WMServer", the User-Agent header MAY also include the client-guid syntax element. Otherwise, the client-guid syntax element MUST be included.<20>

The value of the guid-value syntax element, when specified, MUST be the same GUID for all requests belonging to the same RTSP streaming session. The client MAY specify a different GUID on the guid-value syntax element for different streaming sessions.<21>

The client SHOULD specify the Supported (section 2.2.6.10) header in the request if the request is using the DESCRIBE, SETUP, or PLAY method. Otherwise, the client MAY specify the Supported header in the request. If the Supported header is specified, the header MUST correctly reflect the features that are supported by the client.

The client MUST support the following features: com.microsoft.wm.eosmsg and com.microsoft.wm.sswitch. The client SHOULD support the following features: com.microsoft.wm.predstrm, com.microsoft.wm.srvppair, and com.microsoft.wm.startupprofile.<22>

If the client intends to forward the content to another client by using a different streaming protocol, such as the Windows Media HTTP Streaming Protocol as specified in [MS-WMSP], the client SHOULD specify the com.microsoft.wm.locid token on the Supported header. Otherwise, that token MUST NOT be specified.

If the request is any of the types Describe, SelectStream, Teardown, or UdpPacketPair, and if the Playlist-gen-id variable in the abstract data model has a nonzero value, the client MUST specify the X-Playlist-Gen-Id (section 2.2.6.22) header in the request. The numerical value specified on the X-Playlist-Gen-Id header MUST be equal to the value of the Playlist-gen-id variable.

The client SHOULD specify the X-Accept-Authentication (section 2.2.6.14) and X-Accept-Proxy-Authentication (section 2.2.6.15) headers in the request.

If the client is acting as a proxy server and relaying a request from another client, the request MUST include the Via header (as specified in [RFC2326] section 12.43) in the request.

If the client is acting as a proxy server and relaying a request from another client, the request SHOULD include the X-Proxy-Client-Verb (section 2.2.6.25) header in the request.

If the client is acting as a proxy server and relaying a request from another client, and if that request contains either a User-Agent header or a X-Proxy-Client-Agent header, the client MUST include the X-Proxy-Client-Agent (section 2.2.6.24) header in the request.

When the client is sending the X-Proxy-Client-Agent header in a request, it MUST be identical to the X-Proxy-Client-Agent header that was received in the original request (that is, the request that the client is relaying). If the original request does not have a X-Proxy-Client-Agent header, when the client sends the X-Proxy-Client-Agent header, the user-agent-data syntax element on that header MUST be identical to the user-agent-data syntax element of the User-Agent header in the original request.<23>

If there are any cookies to send for the URL specified on the RTSP request line, the Cookie (section 2.2.6.4) header MUST be included in the request.

If the request contains a non-empty message body, the client MUST specify the Content-Type (section 2.2.6.3) header.