If auto_reconnect is disabled, client->state won't be setted in MQTT_STATE_WAIT_TIMEOUT state, which results in an error if esp_mqtt_client_start() is called.
Thank you @leewo0 for this useful bugfix, indeed client->state must be updated with client->run.
Can you please rebase your changes? (again on top of idf branch)
If auto_reconnect is disabled, client->state won't be setted in MQTT_STATE_WAIT_TIMEOUT state, which results in an error if esp_mqtt_client_start() is called.