3.1.5.13 Send Mask Processing

When one or both of the optional send mask 32-bit fields is present, and one or more bits are set in the fields, the sender is indicating that it sent a packet or packets that were not marked as reliable and did not receive an acknowledgement yet. The two 32-bit, little-endian fields MUST be considered as one 64-bit field, where dwSendMask1 is the low 32 bits and dwSendMask2 is the high 32 bits. If either 32-bit field is not available, the entire contents of the 64-bit field MUST be considered as all 0.

The receiver of a send mask SHOULD loop through each bit of the combined 64-bit value from the least significant bit to the most significant in little-endian byte order. Each bit corresponds to a sequence ID prior to bSeq, and if that is the bit that is set, it indicates that the corresponding packet was not sent reliably and will not be retried. If the recipient of the send mask had not received the packet and had not already processed a send mask that identified the sequence ID, it SHOULD consider the packet as dropped and release its placeholder in the sequence. That is, any sequential messages that could not be indicated because of the gap in the sequence where the packet that was not marked as reliable had been SHOULD now be reported to the upper layer.