Hi
This is a question related to plugin developement on Dovecot 2.1.4.
I'm currently implementing a dovecot plugin that retrieves mails from a corporate server through an internal protocol. The plugin is very similar to the pop3c storage (lib-storage/index/pop3c). The plugin has to map original server UIDs to IMAP UIDs, using MAIL_CACHE_POP3_UIDL cache field the same way pop3c does.
So, I've got a function similar to pop3c_sync_messages(), performing several mail_index_append() and mail_cache_add() calls.
The problem is that on the first sync, when the index and cache files don't exist yet, there's a failure writing data in cache. The call to mail_index_sync_commit()\mail_cache_transaction_commit() fails because of mail_cache_transaction_lock().
The index and cache files are properly created, but the cache doesn't contain the MAIL_CACHE_POP3_UIDL values. It works properly on the second sync, the MAIL_CACHE_POP3_UIDL field being properly saved.
Would you have some ideas on what could be wrong here?
Thanks,
John