in source/core_mqtt_agent.c [838:874]
static void clearPendingAcknowledgments( MQTTAgentContext_t * pMqttAgentContext,
bool clearOnlySubUnsubEntries )
{
size_t i = 0;
MQTTAgentAckInfo_t * pendingAcks;
assert( pMqttAgentContext != NULL );
pendingAcks = pMqttAgentContext->pPendingAcks;
/* Clear all operations pending acknowledgments. */
for( i = 0; i < MQTT_AGENT_MAX_OUTSTANDING_ACKS; i++ )
{
if( pendingAcks[ i ].packetId != MQTT_PACKET_ID_INVALID )
{
bool clearEntry = true;
assert( pendingAcks[ i ].pOriginalCommand != NULL );
if( clearOnlySubUnsubEntries &&
( pendingAcks[ i ].pOriginalCommand->commandType != SUBSCRIBE ) &&
( pendingAcks[ i ].pOriginalCommand->commandType != UNSUBSCRIBE ) )
{
clearEntry = false;
}
if( clearEntry )
{
/* Receive failed to indicate network error. */
concludeCommand( pMqttAgentContext, pendingAcks[ i ].pOriginalCommand, MQTTRecvFailed, NULL );
/* Now remove it from the list. */
( void ) memset( &( pendingAcks[ i ] ), 0x00, sizeof( MQTTAgentAckInfo_t ) );
}
}
}
}