Function MQ_Retry

MailerQ has a non-blocking nature, and uses callbacks to pass control to a plugin. It is then up to the plugin to interact with the event loop, and pass control back to MailerQ when it is ready with its task. Passing back control can be done in three different ways:

The MQ_Retry() implements the third behavior, and is probably the most peculiar way of handing back control to MailerQ. If you call it, MailerQ will start all over, and will call all plugins again.

This is a very odd way of handing back control, and you normally should not use it, because you run the risk of ending up in an infinite loop. It could however be useful if your plugin makes a change to a received message, and you want to run all plugins again so that they can all respond to the modified message.

/**
 *  Finish plugin processing
 *
 *  @param  connection  the connection that may move on to the next plugin
 */
void MQ_Retry(MQ_Connection *connection);

See also MQ_Continue() and MQ_Complete() for the other (and probably more useful) ways of handing back control.