IMAP: Do not return quota resources if no quota is set

This commit is contained in:
mdecimus
2026-01-14 20:06:16 -03:00
parent 72858459c6
commit 887ab71314

View File

@@ -10,8 +10,6 @@
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
*/ */
use std::time::Instant;
use crate::{ use crate::{
core::{Session, SessionData}, core::{Session, SessionData},
op::ImapContext, op::ImapContext,
@@ -28,6 +26,7 @@ use imap_proto::{
}, },
receiver::Request, receiver::Request,
}; };
use std::time::Instant;
impl<T: SessionStream> Session<T> { impl<T: SessionStream> Session<T> {
pub async fn handle_get_quota(&mut self, request: Request<Command>) -> trc::Result<()> { pub async fn handle_get_quota(&mut self, request: Request<Command>) -> trc::Result<()> {
@@ -128,11 +127,15 @@ impl<T: SessionStream> SessionData<T> {
quota_root_items: vec![], quota_root_items: vec![],
quota_items: vec![QuotaItem { quota_items: vec![QuotaItem {
name: arguments.name, name: arguments.name,
resources: vec![QuotaResource { resources: if access_token.quota > 0 {
resource: QuotaResourceName::Storage, vec![QuotaResource {
total: access_token.quota, resource: QuotaResourceName::Storage,
used: used_quota as u64, total: access_token.quota,
}], used: used_quota as u64,
}]
} else {
vec![]
},
}], }],
}; };
@@ -188,11 +191,15 @@ impl<T: SessionStream> SessionData<T> {
quota_root_items: vec![arguments.name, format!("#{account_id}")], quota_root_items: vec![arguments.name, format!("#{account_id}")],
quota_items: vec![QuotaItem { quota_items: vec![QuotaItem {
name: format!("#{account_id}"), name: format!("#{account_id}"),
resources: vec![QuotaResource { resources: if access_token.quota > 0 {
resource: QuotaResourceName::Storage, vec![QuotaResource {
total: access_token.quota, resource: QuotaResourceName::Storage,
used: used_quota as u64, total: access_token.quota,
}], used: used_quota as u64,
}]
} else {
vec![]
},
}], }],
}; };