Hand control back to the engine verified
The three ways a plugin finishes: done, carry on, or try this again.
In detail
After asynchronous work a plugin must return control explicitly, and which of the three it calls is the decision it was loaded to make. MQ_complete ends the plugin's involvement, MQ_continue lets the engine proceed with its own handling, and MQ_retry asks for the operation to be attempted again. A plugin that forgets to call any of them leaves the connection hanging until a timeout — which looks, from the outside, exactly like a network problem at the sender's end. That is the failure mode worth knowing when diagnosing a node with a plugin on it.