This work is the outcome of RChain-3578 which investigated the increase in time to propose. The recommendation was to improve the Casper feedback loop.
When Casper is missing some dependencies, it will ask for it using CommUtil.sendBlockRequest.
Only node in state Running will answer messages of type HasBlockRequest
Only node in state Running will answer messages of type HasBlock
Entries from requested blocks must be "maintained". If a block was requested, but data is not received in some defined timeout, a request must be sent to a peer from a waitinglist.
Entries from requested blocks can be removed once the block is added by casper