From: Timo Sirainen Date: Fri, 12 May 2017 12:42:31 +0000 (+0300) Subject: imapc-quota: Avoid sending unnecessarily many GETQUOTA[ROOT] commands X-Git-Tag: 2.3.0.rc1~1633 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dee1520b5166708bd8dd4230c279c950bf01029a;p=thirdparty%2Fdovecot%2Fcore.git imapc-quota: Avoid sending unnecessarily many GETQUOTA[ROOT] commands The last_refresh == ioloop_timeval check didn't work, because the refresh itself updated ioloop_timeval. This caused a single quota lookup to issue multiple GETQUOTA[ROOT] commands to imapc. --- diff --git a/src/plugins/quota/quota-imapc.c b/src/plugins/quota/quota-imapc.c index 2cc6527d73..a3d64941dd 100644 --- a/src/plugins/quota/quota-imapc.c +++ b/src/plugins/quota/quota-imapc.c @@ -346,6 +346,7 @@ static int imapc_quota_refresh_root(struct imapc_quota_root *root) static int imapc_quota_refresh(struct imapc_quota_root *root) { enum imapc_capability capa; + int ret; if (root->imapc_ns == NULL) { /* imapc namespace is missing - disable this quota backend */ @@ -366,11 +367,14 @@ static int imapc_quota_refresh(struct imapc_quota_root *root) return 0; } - root->last_refresh = ioloop_timeval; if (root->root_name == NULL) - return imapc_quota_refresh_mailbox(root); + ret = imapc_quota_refresh_mailbox(root); else - return imapc_quota_refresh_root(root); + ret = imapc_quota_refresh_root(root); + /* set the last_refresh only after the refresh, because it changes + ioloop_timeval. */ + root->last_refresh = ioloop_timeval; + return ret; } static int imapc_quota_init_limits(struct quota_root *_root)