From: Timo Sirainen Date: Thu, 7 Apr 2016 14:50:28 +0000 (+0300) Subject: virtual plugin: struct mail_vfuncs.close() wasn't implemented. X-Git-Tag: 2.2.24~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e3367d7b54864d2e4b1931903e3f660ae64fbe3a;p=thirdparty%2Fdovecot%2Fcore.git virtual plugin: struct mail_vfuncs.close() wasn't implemented. This wasn't a problem normally, because the core code wouldn't try to call this. It became a problem only after other plugins were trying to call it. --- diff --git a/src/plugins/virtual/virtual-mail.c b/src/plugins/virtual/virtual-mail.c index b135e8442a..84fe7dd786 100644 --- a/src/plugins/virtual/virtual-mail.c +++ b/src/plugins/virtual/virtual-mail.c @@ -55,6 +55,21 @@ virtual_mail_alloc(struct mailbox_transaction_context *t, return &vmail->imail.mail.mail; } +static void virtual_mail_close(struct mail *mail) +{ + struct virtual_mail *vmail = (struct virtual_mail *)mail; + struct mail **mails; + unsigned int i, count; + + mails = array_get_modifiable(&vmail->backend_mails, &count); + for (i = 0; i < count; i++) { + struct mail_private *p = (struct mail_private *)mails[i]; + + p->v.close(mails[i]); + } + index_mail_close(mail); +} + static void virtual_mail_free(struct mail *mail) { struct virtual_mail *vmail = (struct virtual_mail *)mail; @@ -487,7 +502,7 @@ virtual_mail_set_cache_corrupted(struct mail *mail, enum mail_fetch_field field) } struct mail_vfuncs virtual_mail_vfuncs = { - NULL, + virtual_mail_close, virtual_mail_free, virtual_mail_set_seq, virtual_mail_set_uid,