void mail_sessions_deinit(void) { while (mail_sessions_head != NULL) { struct mail_session *session = mail_sessions_head; if (!session->disconnected) mail_session_unref(&session); mail_session_free(mail_sessions_head); } hash_table_destroy(&mail_sessions_hash); }
void mail_sessions_free_memory(void) { unsigned int diff; while (mail_sessions_head != NULL && mail_sessions_head->refcount == 0) { i_assert(mail_sessions_head->disconnected); mail_session_free(mail_sessions_head); if (global_used_memory < stats_settings->memory_limit || mail_sessions_head == NULL) break; diff = ioloop_time - mail_sessions_head->last_update.tv_sec; if (diff < stats_settings->session_min_time) break; } }