3.1.5.6 Receiving a $P (Packet-Pair) Packet

The client MUST verify that the $P packet adheres to the syntax specified in section 2.2.3.7.

The client MUST verify that the value of the $P-Packets-Expected variable in the Abstract Data Model is greater than 0. If the value is 0, this MUST be treated as an error.

If the value of the $P-Packets-Expected variable is 3, the client SHOULD set the value of the $P-Arrival-Time variable in the Abstract Data Model to the current time. The client MUST then set the value of the Expected-Packets variable to $P.

If the value of the $P-Packets-Expected variable is 2, the client can use the difference between the current time and the value of the $P-Arrival-Time variable to compute the bit rate at which the current $P packet was transferred. The client SHOULD make this information available to a higher layer. The client MUST then set the value of the Expected-Packets variable to $P.

If the value of the $P-Packets-Expected variable is 1 and the server's product name is "Cougar", as determined by the Server-Version variable, then the client MUST set the value of the Expected-Packets variable to $M.

Otherwise, the client  MUST set the value of the Expected-Packets variable to $H.

The client MUST decrement the value of the $P-Packets-Expected variable by 1 and MUST then process the rules in section 3.1.5.2.