Deadlock in qmf agent triggered by producer flow control

Details

Description

The remote agent (cpp/src/qpid/agent) occasionally holds a mutex while calling message_transfer. If the message send is blocked waiting for a completion, the agent can deadlock because a received message callback that causes the lock to be acquired will never return and the callback thread is needed to process completions.