diff --git a/source/core_mqtt.c b/source/core_mqtt.c index c7460c26c..38f03a537 100644 --- a/source/core_mqtt.c +++ b/source/core_mqtt.c @@ -851,13 +851,6 @@ static int32_t sendMessageVector( MQTTContext_t * pContext, /* MISRA Empty body */ } - /* Check for timeout. */ - if( calculateElapsedTime( pContext->getTime(), startTime ) > MQTT_SEND_TIMEOUT_MS ) - { - LogError( ( "sendMessageVector: Unable to send packet: Timed out." ) ); - break; - } - /* Update the send pointer to the correct vector and offset. */ while( ( pIoVectIterator <= &( pIoVec[ ioVecCount - 1U ] ) ) && ( sendResult >= ( int32_t ) pIoVectIterator->iov_len ) ) @@ -881,6 +874,15 @@ static int32_t sendMessageVector( MQTTContext_t * pContext, pIoVectIterator->iov_base = ( const void * ) &( ( ( const uint8_t * ) pIoVectIterator->iov_base )[ sendResult ] ); pIoVectIterator->iov_len -= ( size_t ) sendResult; } + + /* Check for timeout. */ + if( ( bytesSentOrError < ( int32_t ) bytesToSend ) && + ( bytesSentOrError >= 0 ) && + ( calculateElapsedTime( pContext->getTime(), startTime ) > MQTT_SEND_TIMEOUT_MS ) ) + { + LogError( ( "sendMessageVector: Unable to send packet: Timed out." ) ); + break; + } } return bytesSentOrError;