Lines Matching defs:qbox
78 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(_mail->box);
99 if (!array_is_created(&qbox->expunge_uids)) {
100 i_array_init(&qbox->expunge_uids, 64);
101 i_array_init(&qbox->expunge_sizes, 64);
103 array_append(&qbox->expunge_uids, &_mail->uid, 1);
104 array_append(&qbox->expunge_sizes, &size, 1);
109 qbox->sync_transaction_expunge = TRUE;
111 qbox->sync_transaction_expunge = FALSE;
122 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(box);
143 if (qbox->module_ctx.super.get_status(box, items, status_r) < 0)
153 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(box);
157 t = qbox->module_ctx.super.transaction_begin(box, flags, reason);
169 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(ctx->box);
174 if (qbox->module_ctx.super.transaction_commit(ctx, changes_r) < 0) {
186 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(ctx->box);
191 qbox->module_ctx.super.transaction_rollback(ctx);
197 struct quota_mailbox *qbox = QUOTA_CONTEXT(_mail->box);
202 if (qbox == NULL)
286 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(t->box);
302 if (qbox->module_ctx.super.copy(ctx, mail) < 0)
318 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(t->box);
368 return qbox->module_ctx.super.save_begin(ctx, input);
373 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(ctx->transaction->box);
376 if (qbox->module_ctx.super.save_finish(ctx) < 0)
383 static void quota_mailbox_sync_cleanup(struct quota_mailbox *qbox)
385 if (array_is_created(&qbox->expunge_uids)) {
386 array_clear(&qbox->expunge_uids);
387 array_clear(&qbox->expunge_sizes);
390 if (qbox->expunge_qt != NULL && qbox->expunge_qt->tmp_mail != NULL) {
391 mail_free(&qbox->expunge_qt->tmp_mail);
392 (void)mailbox_transaction_commit(&qbox->expunge_trans);
394 qbox->sync_transaction_expunge = FALSE;
397 static void quota_mailbox_sync_commit(struct quota_mailbox *qbox)
399 quota_mailbox_sync_cleanup(qbox);
400 if (qbox->expunge_qt != NULL)
401 (void)quota_transaction_commit(&qbox->expunge_qt);
402 qbox->recalculate = FALSE;
408 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(box);
416 if (qbox->module_ctx.super.sync_notify != NULL)
417 qbox->module_ctx.super.sync_notify(box, uid, sync_type);
419 if (sync_type != MAILBOX_SYNC_TYPE_EXPUNGE || qbox->recalculate ||
424 quota_mailbox_sync_cleanup(qbox);
429 if (qbox->expunge_qt == NULL) {
430 qbox->expunge_qt = quota_transaction_begin(box);
431 qbox->expunge_qt->sync_transaction =
432 qbox->sync_transaction_expunge;
434 if (qbox->expunge_qt->auto_updating) {
438 quota_free_bytes(qbox->expunge_qt, 0);
446 if (!array_is_created(&qbox->expunge_uids) ||
447 array_is_empty(&qbox->expunge_uids)) {
450 uids = array_get(&qbox->expunge_uids, &count);
451 for (i = qbox->prev_idx; i < count; i++) {
456 for (i = 0; i < qbox->prev_idx; i++) {
460 if (i == qbox->prev_idx)
463 qbox->prev_idx = i;
468 sizep = array_idx(&qbox->expunge_sizes, i);
469 quota_free_bytes(qbox->expunge_qt, *sizep);
479 if (qbox->expunge_qt->tmp_mail == NULL) {
487 qbox->expunge_trans = mailbox_transaction_begin(box, 0, "quota");
489 qbox->expunge_qt->tmp_mail =
490 mail_alloc(qbox->expunge_trans,
493 if (!mail_set_uid(qbox->expunge_qt->tmp_mail, uid))
496 if (mail_get_physical_size(qbox->expunge_qt->tmp_mail, &size) == 0) {
497 quota_free_bytes(qbox->expunge_qt, size);
500 } else if (mail_get_virtual_size(qbox->expunge_qt->tmp_mail, &size) == 0) {
501 quota_free_bytes(qbox->expunge_qt, size);
506 quota_recalculate(qbox->expunge_qt, QUOTA_RECALCULATE_MISSING_FREES);
507 qbox->recalculate = TRUE;
514 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(ctx->box);
517 ret = qbox->module_ctx.super.sync_deinit(ctx, status_r);
521 quota_mailbox_sync_commit(qbox);
539 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(box);
544 quota_mailbox_sync_commit(qbox);
553 qbox->module_ctx.super.close(box);
558 struct quota_mailbox *qbox = QUOTA_CONTEXT_REQUIRE(box);
560 if (array_is_created(&qbox->expunge_uids)) {
561 array_free(&qbox->expunge_uids);
562 array_free(&qbox->expunge_sizes);
564 i_assert(qbox->expunge_qt == NULL ||
565 qbox->expunge_qt->tmp_mail == NULL);
567 qbox->module_ctx.super.free(box);
573 struct quota_mailbox *qbox;
581 qbox = p_new(box->pool, struct quota_mailbox, 1);
582 qbox->module_ctx.super = *v;
583 box->vlast = &qbox->module_ctx.super;
596 MODULE_CONTEXT_SET(box, quota_storage_module, qbox);