On 13.2.2012, at 19.28, Alex Baule wrote:
static void emexis_mailbox_allocated(struct mailbox *box) { union mailbox_module_context *zbox;
zbox = p_new(box->pool, union mailbox_module_context, 1); zbox->super = box->v; box->v.open = Mplugin_mailbox_open; box->v.sync_notify = Mplugin_mailbox_sync_notify;
MODULE_CONTEXT_SET_SELF(box, emexis_storage_module, zbox); }
The above is an "old way" to do it. It doesn't work well if you have any other plugins loaded.
struct mailbox_vfuncs *v = box->vlast; v->sync_notify = Mplugin_mailbox_sync_notify;
But in this two cases, the Mplugin_mailbox_sync_notify is never called... i missing something ??
Never called at all? What storage backend are you using as the base? Maildir?
Anyway, the way you should be calling it is the exact same way quota plugin does:
void Mplugin_mailbox_allocated(struct mailbox *box) { struct mailbox_vfuncs *v = box->vlast; union mailbox_module_context *zbox;
zbox = p_new(box->pool, union mailbox_module_context, 1);
zbox->super = *v;
box->vlast = &zbox->super;
v->open = Mplugin_mailbox_open;
v->sync_notify = Mplugin_mailbox_sync_notify;
MODULE_CONTEXT_SET_SELF(box, Mplugin_storage_module, zbox);
}