int retry = 0;
const int MAX_RETRIES = 5;
for (; retry < MAX_RETRIES; ++retry) {
+ // mail_data_final from last retry was not yet released, release it now
+ // and retry gathering data once again
+ if (mail_data_final) {
+ int free_error = email_free_mail_data(&mail_data_final, 1);
+ if (EMAIL_ERROR_NONE != free_error) {
+ LoggerW("email_free_mail_data error: %d, %s", free_error,
+ get_error_message(free_error));
+ }
+ }
+
err = email_get_mail_data(message->getId(), &mail_data_final);
if (EMAIL_ERROR_NONE != err) {
LoggerD("Message adding process finished after %d retries. mail_id == thread_id", retry);
break;
}
-
- int free_error = email_free_mail_data(&mail_data_final, 1);
- if (EMAIL_ERROR_NONE != free_error) {
- LoggerW("email_free_mail_data error: %d, %s", free_error, get_error_message(free_error));
- }
LoggerD("Retry number %d failed", retry);
std::this_thread::sleep_for(100ms);
}