Hm, It seems it comes to a recursive loop. The problem is that I
override storage->v.mailbox_open method with my own, but then use
the same method to get the mailbox inside the method and of course the
thing loops as hell. But it's almost the same in Quota plugin, there is
just that qstorage, but also uses super.mailbox_open which is the
current method that is being executed.
So, how could I get a mailbox? Should I call maildir-storage.mailbox_open?
Btw, original Quota plugin doesn't work.
dovecot: Jul 23 19:26:07 Error: IMAP(seba):
dlopen(/usr/lib/dovecot/modules/imap_quota.so) failed:
/usr/lib/dovecot/modules/imap_quota.so: undefined symbol:
array_modifyable_idx
Sebastjan
Ok, I found out how to use logging. ( Check failures.c, methods i_[level])
Now i have problem with method that opens mailbox. It looks like this:
static struct mailbox *quota_mailbox_open(struct mail_storage *storage, const char *name, struct istream *input, enum mailbox_open_flags flags)
{
struct mailbox *box;
box = storage->v.mailbox_open(storage, name, input, flags);
if (box == NULL)
return NULL;
box->v.save_finish = quota_save_finish;
box->v.copy = quota_copy;
return box;
}
When I run dovecot and select a mailbox the child that is processing my connection gets killed. Why? I just override those functions, everything else is same as original method.
SebastjanOn 7/23/05, Sebastjan Trepca < trepca@gmail.com> wrote:Hi,
I have a few questions regarding copy and save_finish methods.
How can I get a filename or processing mail from the parameters you get in that methods? How could I use the logger you use for dovecot inside my plugin?
Thanks, Sebastjan