3.2.5.2 Sending a Response (All Request Types)

This section specifies common steps that MUST be performed whenever the server sends a response to a request from the client.

The response sent by the server MUST NOT specify any of the headers and tokens, as specified in section 2.2.6, that are defined only for use in requests or responses sent to a server.

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

The server SHOULD specify the Supported (section 2.2.6.10) header in the response, except when sending a GetContentInfo and SendEvent response. If the Supported header is specified, the header MUST correctly reflect the features that are supported by the server. The server MUST support the com.microsoft.wm.eosmsg (section 2.2.6.10.1) and com.microsoft.wm.sswitch (section 2.2.6.10.7) features. The server SHOULD support the com.microsoft.wm.fastcache (section 2.2.6.10.2), com.microsoft.wm.packetpairssrc (section 2.2.6.10.4), com.microsoft.wm.srvppair (section 2.2.6.10.6), and com.microsoft.wm.startupprofile (section 2.2.6.10.8) features.<30>

When responding to a GetContentInfo request, the server SHOULD check for caching requirements from the higher layer (as specified in 3.2.7.5) and use that information to specify the Cache-Control (section 2.2.6.2) header in the response. If no information is provided by the higher layer, then the server MUST specify only the no-cache (section 2.2.6.2.3) directive on the Cache-Control header.

When the server includes the Session header in the response, it SHOULD also include the timeout parameter (as specified in [RFC2326] section 12.37). The value of the timeout parameter MUST be set to a value less than or equal to the timeout interval of the Idle-Timeout timer. It is recommended that the value of the token be at least a few seconds less than the timeout interval to allow for processing delays and network delays.

If the Playlist-gen-id variable in the abstract data model has a nonzero value, the client MUST specify an X-Playlist-Gen-Id (section 2.2.6.22) header in the response. The numerical value specified on the header MUST be equal to the value of the Playlist-gen-id variable.

The Idle-Timeout timer MUST be started unless the value of the State variable in the abstract data model is PLAYING and RTP packets are transmitted over TCP.