3.1.6.1 KeepAlive Timer Expires
When the KeepAlive timer expires, the following actions MUST take place.
If the value of the KeepAlive-Mode variable specifies that the non-pipelined mode of the protocol is used, or if the TCP connection used for the most recent Play (section 2.2.2.6) or PlayNextEntry request (section 2.2.2.7) is no longer open, the client MUST establish a new TCP connection to the server and to the same TCP port used for the Play request.
The client MUST send a KeepAlive request (section 2.2.2.3). If the value of the KeepAlive-Mode variable specifies that the pipelined mode of the protocol is used, and if the TCP connection used for the most recent Play or PlayNextEntry request is still open, then the KeepAlive request MUST be sent using an HTTP OPTIONS request (as specified in section 2.2.2.3.2) on the same TCP connection used for the most recent Play or PlayNextEntry request.
If the value of the KeepAlive-Mode variable specifies that the pipelined mode of the protocol is used and if the TCP connection used for the most recent Play or PlayNextEntry request is no longer open, then the KeepAlive request MUST be sent using an HTTP POST request (as specified in section 2.2.2.3.1) on the TCP connection that was newly established according to the preceding rules.
If the value of the KeepAlive-Mode variable specifies that the non-pipelined mode of the protocol is used, the KeepAlive request MUST be sent on the TCP connection that was newly established according to the preceding rules.
The KeepAlive timer MUST be restarted.
After having sent the request, the client MUST process the rules in section 3.1.5.2.