Lines Matching defs:_mail

194 static bool index_mail_get_pvt(struct mail *_mail)
196 struct mail_private *mail = (struct mail_private *)_mail;
200 if (_mail->box->view_pvt == NULL) {
204 if (_mail->saving) {
208 i_assert(_mail->uid != 0);
210 index_transaction_init_pvt(_mail->transaction);
211 if (!mail_index_lookup_seq(_mail->transaction->view_pvt, _mail->uid,
217 enum mail_flags index_mail_get_flags(struct mail *_mail)
219 struct mail_private *mail = (struct mail_private *)_mail;
223 rec = mail_index_lookup(_mail->transaction->view, _mail->seq);
227 if (mailbox_recent_flags_have_uid(_mail->box, _mail->uid))
230 if (index_mail_get_pvt(_mail)) {
232 pvt_flags_mask = mailbox_get_private_flags_mask(_mail->box);
234 rec = mail_index_lookup(_mail->transaction->view_pvt,
241 uint64_t index_mail_get_modseq(struct mail *_mail)
243 struct index_mail *mail = INDEX_MAIL(_mail);
248 mail_index_modseq_enable(_mail->box->index);
250 mail_index_modseq_lookup(_mail->transaction->view, _mail->seq);
254 uint64_t index_mail_get_pvt_modseq(struct mail *_mail)
256 struct index_mail *mail = INDEX_MAIL(_mail);
261 if (mailbox_open_index_pvt(_mail->box) <= 0)
263 index_transaction_init_pvt(_mail->transaction);
265 mail_index_modseq_enable(_mail->box->index_pvt);
267 mail_index_modseq_lookup(_mail->transaction->view_pvt,
268 _mail->seq);
272 const char *const *index_mail_get_keywords(struct mail *_mail)
274 struct index_mail *mail = INDEX_MAIL(_mail);
283 (void)index_mail_get_keyword_indexes(_mail);
302 index_mail_get_keyword_indexes(struct mail *_mail)
304 struct index_mail *mail = INDEX_MAIL(_mail);
309 mail_index_lookup_keywords(_mail->transaction->view,
316 int index_mail_get_parts(struct mail *_mail, struct message_part **parts_r)
318 struct index_mail *mail = INDEX_MAIL(_mail);
329 index_mail_cache_reason(_mail, "mime parts");
345 int index_mail_get_received_date(struct mail *_mail, time_t *date_r)
347 struct index_mail *mail = INDEX_MAIL(_mail);
363 int index_mail_get_save_date(struct mail *_mail, time_t *date_r)
365 struct index_mail *mail = INDEX_MAIL(_mail);
408 int index_mail_get_date(struct mail *_mail, time_t *date_r, int *timezone_r)
410 struct index_mail *mail = INDEX_MAIL(_mail);
454 const uint32_t *index_mail_get_vsize_extension(struct mail *_mail)
456 struct index_mail *mail = INDEX_MAIL(_mail);
460 mail_index_lookup_ext(_mail->transaction->view, _mail->seq,
461 _mail->box->mail_vsize_ext_id, &idata, &expunged);
473 struct mail *_mail = &mail->mail.mail;
478 const uint32_t *vsize = index_mail_get_vsize_extension(_mail);
505 mail_index_update_ext(_mail->transaction->itrans, _mail->seq,
506 _mail->box->mail_vsize_ext_id, &vsize, NULL);
541 int index_mail_get_virtual_size(struct mail *_mail, uoff_t *size_r)
543 struct index_mail *mail = INDEX_MAIL(_mail);
553 if (mail_get_stream_because(_mail, &hdr_size, &body_size,
554 index_mail_cache_reason(_mail, "virtual size"), &input) < 0)
563 int index_mail_get_physical_size(struct mail *_mail, uoff_t *size_r)
565 struct index_mail *mail = INDEX_MAIL(_mail);
592 struct mail *_mail = &mail->mail.mail;
593 const struct mail_storage_settings *set = _mail->box->storage->set;
599 hdr = mail_index_get_header(_mail->transaction->view);
606 !_mail->box->mail_cache_disabled) {
607 mail_cache_add(_mail->transaction->cache_trans, _mail->seq,
625 struct mail *_mail = &mail->mail.mail;
631 if (mail_cache_field_want_add(_mail->transaction->cache_trans,
632 _mail->seq, cache_field_body))
634 if (mail_cache_field_want_add(_mail->transaction->cache_trans,
635 _mail->seq, cache_field_bodystructure))
642 struct mail *_mail = &mail->mail.mail;
649 want_cached = mail_cache_field_want_add(_mail->transaction->cache_trans,
650 _mail->seq, cache_flags_idx);
669 _mail->has_nuls = TRUE;
670 _mail->has_no_nuls = FALSE;
673 _mail->has_nuls = FALSE;
674 _mail->has_no_nuls = TRUE;
692 struct mail *_mail = &mail->mail.mail;
700 mail_cache_field_exists(_mail->transaction->cache_view, _mail->seq,
706 decision = mail_cache_field_get_decision(_mail->box->cache,
734 struct mail *_mail = &mail->mail.mail;
750 mail_cache_field_exists(_mail->transaction->cache_view,
751 _mail->seq, cache_field_parts) > 0) {
769 mail_cache_field_can_add(_mail->transaction->cache_trans,
770 _mail->seq, cache_field_bodystructure);
773 mail_cache_field_want_add(_mail->transaction->cache_trans,
774 _mail->seq, cache_field_bodystructure);
786 mail_cache_field_exists(_mail->transaction->cache_view,
787 _mail->seq, cache_field_bodystructure) > 0;
792 dec = mail_cache_field_get_decision(_mail->box->cache,
800 mail_cache_field_can_add(_mail->transaction->cache_trans,
801 _mail->seq, cache_field_body);
804 mail_cache_field_want_add(_mail->transaction->cache_trans,
805 _mail->seq, cache_field_body);
820 struct mail *_mail = &mail->mail.mail;
856 return mail_cache_field_can_add(_mail->transaction->cache_trans,
857 _mail->seq, cache_field);
859 return mail_cache_field_want_add(_mail->transaction->cache_trans,
860 _mail->seq, cache_field);
882 struct mail *_mail = &mail->mail.mail;
883 struct mail_index_view *view = _mail->transaction->view;
904 if ((mail_index_map_get_ext_idx(view->map, _mail->box->mail_vsize_ext_id, &idx) ||
905 mail_index_map_get_ext_idx(view->map, _mail->box->vsize_hdr_ext_id, &idx)) &&
909 index_mail_get_vsize_extension(_mail);
916 mail_index_update_ext(_mail->transaction->itrans, _mail->seq,
917 _mail->box->mail_vsize_ext_id, &vsize, NULL);
1143 struct mail *_mail = &mail->mail.mail;
1151 index_mail_refresh_expunged(_mail);
1152 if (_mail->expunged)
1155 mail_set_critical(_mail,
1200 void index_mail_set_read_buffer_size(struct mail *_mail, struct istream *input)
1202 struct index_mail *mail = INDEX_MAIL(_mail);
1216 struct mail *_mail = &mail->mail.mail;
1222 if (_mail->box->storage->user->mail_debug &&
1226 _mail->box->vname, _mail->uid,
1229 _mail->mail_stream_opened = TRUE;
1232 _mail->transaction->stats_track) {
1233 input = i_stream_create_mail(_mail, data->stream,
1502 int index_mail_get_special(struct mail *_mail,
1505 struct index_mail *mail = INDEX_MAIL(_mail);
1552 *value_r = _mail->box->vname;
1692 void index_mail_close(struct mail *_mail)
1694 struct index_mail *mail = INDEX_MAIL(_mail);
1708 event_unref(&_mail->event);
1725 mail_cache_close_mail(_mail->transaction->cache_trans, _mail->seq);
1734 struct mail *_mail = &mail->mail.mail;
1745 if (mail_cache_field_exists(_mail->transaction->cache_view,
1746 _mail->seq, cache_field_envelope) > 0)
1752 cache_field_hdr = mail_cache_register_lookup(_mail->box->cache,
1755 mail_cache_field_exists(_mail->transaction->cache_view,
1756 _mail->seq, cache_field_hdr) <= 0)
1761 void index_mail_update_access_parts_pre(struct mail *_mail)
1763 struct index_mail *mail = INDEX_MAIL(_mail);
1765 struct mail_storage *storage = _mail->box->storage;
1767 struct mail_cache_view *cache_view = _mail->transaction->cache_view;
1769 if (_mail->seq == 0) {
1780 !_mail->has_nuls && !_mail->has_no_nuls) {
1784 _mail->has_nuls =
1786 _mail->has_no_nuls =
1801 if (mail_cache_field_exists(cache_view, _mail->seq,
1823 if (mail_cache_field_exists(cache_view, _mail->seq,
1825 mail_cache_field_exists(cache_view, _mail->seq,
1840 if (mail_cache_field_exists(cache_view, _mail->seq,
1854 if (mail_cache_field_exists(cache_view, _mail->seq,
1865 if (mail_cache_field_exists(cache_view, _mail->seq,
1880 void index_mail_update_access_parts_post(struct mail *_mail)
1882 struct index_mail *mail = INDEX_MAIL(_mail);
1887 if (_mail->seq == 0) {
1902 hdr = mail_index_get_header(_mail->transaction->view);
1903 if (!_mail->saving && _mail->uid < hdr->next_uid) {
1905 (void)mail_get_stream_because(_mail, NULL, NULL, "access", &input);
1907 (void)mail_get_hdr_stream(_mail, NULL, &input);
1912 void index_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving)
1914 struct index_mail *mail = INDEX_MAIL(_mail);
1929 mail_index_lookup_uid(_mail->transaction->view, seq,
1932 event_add_int(_mail->event, "seq", _mail->seq);
1933 event_add_int(_mail->event, "uid", _mail->uid);
1934 event_set_append_log_prefix(_mail->event, t_strdup_printf(
1935 "%sUID %u: ", saving ? "saving " : "", _mail->uid));
1937 if (mail_index_view_is_inconsistent(_mail->transaction->view)) {
1943 index_mail_update_access_parts_pre(_mail);
1944 index_mail_update_access_parts_post(_mail);
1953 bool index_mail_prefetch(struct mail *_mail)
1955 struct index_mail *mail = INDEX_MAIL(_mail);
1958 struct mail_storage *storage = _mail->box->storage;
1973 (void)mail_get_stream_because(_mail, NULL, NULL, "prefetch", &input);
1995 bool index_mail_set_uid(struct mail *_mail, uint32_t uid)
1997 struct index_mail *mail = INDEX_MAIL(_mail);
2000 if (mail_index_lookup_seq(_mail->transaction->view, uid, &seq)) {
2001 index_mail_set_seq(_mail, seq, FALSE);
2011 void index_mail_add_temp_wanted_fields(struct mail *_mail,
2015 struct index_mail *mail = INDEX_MAIL(_mail);
2036 mailbox_header_lookup_init(_mail->box,
2042 index_mail_update_access_parts_pre(_mail);
2055 void index_mail_set_uid_cache_updates(struct mail *_mail, bool set)
2057 struct index_mail *mail = INDEX_MAIL(_mail);
2062 void index_mail_free(struct mail *_mail)
2064 struct index_mail *mail = INDEX_MAIL(_mail);
2071 mail->mail.v.close(_mail);
2073 i_assert(_mail->transaction->mail_ref_count > 0);
2074 _mail->transaction->mail_ref_count--;
2086 event_unref(&_mail->event);
2091 void index_mail_cache_parse_continue(struct mail *_mail)
2093 struct index_mail *mail = INDEX_MAIL(_mail);
2112 void index_mail_cache_parse_deinit(struct mail *_mail, time_t received_date,
2115 struct index_mail *mail = INDEX_MAIL(_mail);
2130 index_mail_cache_parse_continue(_mail);
2145 index_mail_update_pvt_flags(struct mail *_mail, enum modify_type modify_type,
2148 struct mail_private *mail = (struct mail_private *)_mail;
2152 if (!index_mail_get_pvt(_mail))
2158 rec = mail_index_lookup(_mail->transaction->view_pvt, mail->seq_pvt);
2159 old_pvt_flags = rec->flags & mailbox_get_private_flags_mask(_mail->box);
2172 void index_mail_update_flags(struct mail *_mail, enum modify_type modify_type,
2175 struct mail_private *mail = (struct mail_private *)_mail;
2181 if (_mail->box->view_pvt != NULL) {
2183 pvt_flags_mask = mailbox_get_private_flags_mask(_mail->box);
2186 if (index_mail_update_pvt_flags(_mail, modify_type, pvt_flags)) {
2187 mail_index_update_flags(_mail->transaction->itrans_pvt,
2198 mail_index_update_flags(_mail->transaction->itrans, _mail->seq,
2204 mail_index_update_flags(_mail->transaction->itrans, _mail->seq,