Hello,
This is my first post to this group. I have read through the instructions before posting. I hope am doing the right thing. If not my sincere apologies.
I am in the process of developing a dovecot IMAP plugin (over v2.2.25). The plugin works with mdbox/sdbox which has ability to keep attachments as external references (via SiS POSIX). The plugin must enable fetching attachment from REDIS instead of local-store.
To accomplish this I was following dovecot via my debugger. I wanted to understand if there was a way to determine a message_part to be of an attachment type ?
Thanks.
-- Regards, Sai Kiran
cmd_fetch() |_ imap_fetch_more() |_ imap_fetch_more_int() |_ imap_fetch_state *state = &ctx->state; state->cur_mail is NULL. search mailbox |_ mailbox_search_next(state->search_ctx, &state->cur_mail) |_ mailbox_search_next_nonblock (via vfunc) |_ index_storage_search_next_nonblock |_ search_more_with_prefetching(ctx, mail_r) |_ mail = index_search_get_mail(ctx) |_ allocates mail (vfunc mail_alloc) and calls hook. |_ also allocates index_mails ret = search_more_with_mail(ctx, mail); |_ call handler (*h) => fetch_body_msgpart |_ imap_msgpart_open |_ imap_msgpart_find_part(mail, msgpart, &part); /* only mail comes here */ mail (uid=1739, seq=5) msgpart (section_number = 2, fetch_type = FETCH_MIME_BODY, partial_offset = 0, partial_size = 512, decode_cte_to_binary = 0) |_ mail_get_parts(mail, &parts) /* atmail send msgpart */ |_ call to p->v.get_parts(mail, parts_r) (index_mail_get_parts) /* atmail over-ride this function */ |_ get_cached_parts(mail) /* sets data->part */ |_ get_unserialized_parts(index_mail) |_ get_serialized_parts(mail, &part_buf) |_ index_mail_cache_lookup_field |_ mail_cache_lookup_field |_ imap_msgpart_open_normal() |_ .. see call stack below ..