3.1.4.6 Request to Stop Streaming

This event occurs if the higher layer wants to stop streaming. For example, if the end user requests that streaming stop or the end user requests to seek to some position in the content while the client is currently streaming multimedia content from a different position.

If the value of the KeepAlive-Mode variable specifies that the non-pipelined mode of the protocol is used and the TCP connection used for the most recent Play request is open, the client MUST close that TCP connection.

If the value of the KeepAlive-Mode variable specifies that the pipelined mode of the protocol is used and the TCP connection used for the most recent Play or PlayNextEntry request is open, then the client MUST send a Stop request (section 2.2.2.10) on that connection.

If the value of the Client-State variable is STREAMING, and the value of the KeepAlive-Mode variable specifies that the pipelined mode of the protocol is used, then the client MUST send a Log request (section 2.2.2.4) to the server on the same TCP connection that the Stop request was sent on.

If the value of the Client-State variable is STREAMING, and the non-pipelined mode of the protocol is used, the client MUST establish a new TCP connection to the server using the IP address and port number obtained by parsing the URL used for the Describe request. The client MUST then send a Log request to the server on the new TCP connection.

If the server's product name is "Cougar", and its version number is greater than or equal to 9.0, as determined by the Server-Version variable, the previously mentioned Log request SHOULD contain a logging message in XML format as defined in [MS-WMLOG]. If the client will submit remote-log remote events using the SendEvent request (section 2.2.2.9), the logging information included in the Log request MUST be a "streaming" log, as defined in [MS-WMLOG]. Otherwise, the logging information MUST be a "legacy" style log, as defined in [MS-WMLOG].

Next, the value of the Client-State variable MUST be set to IDLE.

If the Keepalive timer is running, it MUST be restarted. If it is not running, it MUST be started.

Next, the client MUST process the rules in section 3.1.5.2.