3.1.5.2 MSG_BLKLIST Response Received

On receiving a MSG_BLKLIST (section 2.2.5.2) response message from a server, the client MUST verify that it is well-formed and corresponds to a GetBlockList request message (MSG_GETBLKLIST (section 2.2.4.2)) in its Outstanding Request List. The client then performs the following checks:

  • The client SHOULD verify if the segment ID matches any request in the Outstanding Request List. If the client performs the segment ID check, it MUST silently discard the MSG_BLKLIST message and abort the exchange if the segment ID does not match the segment ID of any request.<11>

  • The client MUST check if the block ranges overlap with the ranges specified in any request with a matching segment ID in the Outstanding Request List. The client MUST silently discard the MSG_BLKLIST message and abort the exchange if the check fails.

If this verification is successful, then the peer MUST do the following:

  • Delete the corresponding request message from the Outstanding Request List, and cancel its Request Timer.

  • Return the segment ID and block range from the MSG_BLKLIST message, as well as the server address, to the higher-layer applications.

Otherwise, the response message MUST be silently discarded.