diff --git a/source/core_mqtt_serializer.c b/source/core_mqtt_serializer.c index 729817629..b54c6a4d6 100644 --- a/source/core_mqtt_serializer.c +++ b/source/core_mqtt_serializer.c @@ -1706,9 +1706,9 @@ MQTTStatus_t MQTT_GetConnectPacketSize( const MQTTConnectInfo_t * pConnectInfo, ( void * ) pPacketSize ) ); status = MQTTBadParameter; } - else if( ( pConnectInfo->clientIdentifierLength == 0U ) || ( pConnectInfo->pClientIdentifier == NULL ) ) + else if( ( ( pConnectInfo->clientIdentifierLength == 0U ) || ( pConnectInfo->pClientIdentifier == NULL ) ) && ( pConnectInfo->cleanSession == false ) ) { - LogError( ( "Mqtt_GetConnectPacketSize() client identifier must be set." ) ); + LogError( ( "Zero-length client identifier requires cleanSession=true per MQTT 3.1.1." ) ); status = MQTTBadParameter; } else if( ( pWillInfo != NULL ) && ( pWillInfo->payloadLength > ( size_t ) UINT16_MAX ) )