3.2.5.2 MSG_GETBLKLIST Request Received
On receiving a valid MSG_GETBLKLIST (section 2.2.4.2) request message from a client, the server MUST perform the following actions in the order specified:
The server MUST first check if the protocol version is supported, based on the version range comparison rules specified in section 3.1.5.1. If the major protocol version is outside the range of the server implementation, the server MUST construct an MSG_NEGO_RESP (section 2.2.5.1) message, fill it in with the maximum and minimum protocol versions it supports, and send the MSG_NEGO_RESP message back to the client.
If the major version is supported by the server, the server MUST select a compatible protocol version based on the same rules specified in section 3.1.5.1 for the following reply message.
The server MUST check whether its Active Client Count is greater than or equal to the maximum number allowed. If the server is already serving more than or equal to the maximum number of clients, the server MUST reply to the client using a MSG_BLKLIST (section 2.2.5.2) message with an empty block range.
Otherwise, the server MUST increment the Active Client Count by 1, set the Upload Timer, and compute the intersection of the block ranges (for the segment specified) in the MSG_GETBLKLIST request with the block ranges for the same segment in the server's Content Cache. The server MUST then send the client a MSG_BLKLIST response message containing the segment ID listed in the MSG_GETBLKLIST request message, and the computed intersection block ranges (possibly empty).
Once the MSG_BLKLIST response message is sent, the server MUST decrement the Active Client Count by 1.