Wait for the BITS message sent from the client for the given BITS session.
If (message type is CLOSE-SESSION)
Set State to COMPLETE
Return from this state.
If (message type is CANCEL-SESSION)
Set State to CANCEL
Return from this state.
If (message type is FRAGMENT)
Apply the message processing rules as described in sections 3.2.5.1, 3.2.5.2 and 3.2.5.5
If (NotifyCache is true)
Send response to the client with the message format described in section 2.2.7.
Return from this state.
If(UploadComplete is true)
Set state to STATE_NOTIFY
Return from this state.
If (processed the last fragment of the entity successfully)
Set UploadComplete to true
Set state to STATE_NOTIFY
Return from this state.
If (not the last fragment of the request entity)
Set state to RECEIVE_FRAGMENTS
Return from this state.