3.1.6.1 Query Timer

If the ClientCNTCIRPackets (section 3.1.1) is empty, the server MUST continue processing as specified in section 3.1.5.1.

If the ClientCNTCIRPackets is not empty, the server MUST remove all entries stored in MissingBlockRanges (section 3.1.1). The server MUST merge block ranges specified by CNTCIR packets stored in ClientCNTCIRPacket and store the merged block ranges list into MissingBlockRanges.

To merge the block ranges, the server MUST first eliminate the CNTCIR packet (section 2.2.3) as follows:

  1. Find the CNTCIR packet which has the highest value for the TimeInSession field (section 2.2.3).

  2. Delete all such CNTCIR packets in the ClientCNTCIRPackets (section where the TimeInSession field specifies that the client joined after 30 seconds of the oldest client.

Server MUST construct a merged list of missing block ranges from the remaining CNTCIR packets in ClientCNTCIRPackets and set the MissingBlockRanges to the merged list.

The merged list MUST NOT have any overlapping block ranges and MUST be in ascending order.

Server MUST change the SessionState (section 3.1.1) to DataState and MUST disable Query Timer and continue processing as specified in section 3.1.5.2.