JMAP Registry API implementation - part 9
This commit is contained in:
@@ -68,6 +68,8 @@ impl Queue {
|
||||
}
|
||||
|
||||
pub async fn start(&mut self) {
|
||||
trc::event!(Queue(trc::QueueEvent::Started));
|
||||
|
||||
loop {
|
||||
let mut refresh_queue;
|
||||
|
||||
|
||||
@@ -261,16 +261,7 @@ impl SmtpSpool for Server {
|
||||
Some(a) => a.deserialize::<Message>().map(Some),
|
||||
None => Ok(None),
|
||||
}) {
|
||||
Ok(Some(message)) => Some(MessageWrapper {
|
||||
is_multi_queue: message.recipients.iter().any(|rcpt| {
|
||||
matches!(rcpt.status, Status::Scheduled | Status::TemporaryFailure(_))
|
||||
&& rcpt.queue != queue_name
|
||||
}),
|
||||
queue_id,
|
||||
queue_name,
|
||||
span_id: 0,
|
||||
message,
|
||||
}),
|
||||
Ok(Some(message)) => Some(MessageWrapper::new(message, queue_id, queue_name)),
|
||||
Ok(None) => None,
|
||||
Err(err) => {
|
||||
trc::error!(
|
||||
@@ -295,6 +286,21 @@ impl SmtpSpool for Server {
|
||||
}
|
||||
}
|
||||
|
||||
impl MessageWrapper {
|
||||
pub fn new(message: Message, queue_id: QueueId, queue_name: QueueName) -> Self {
|
||||
MessageWrapper {
|
||||
is_multi_queue: message.recipients.iter().any(|rcpt| {
|
||||
matches!(rcpt.status, Status::Scheduled | Status::TemporaryFailure(_))
|
||||
&& rcpt.queue != queue_name
|
||||
}),
|
||||
queue_id,
|
||||
queue_name,
|
||||
span_id: 0,
|
||||
message,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn lock_id(queue_id: QueueId, queue_name: QueueName) -> [u8; 16] {
|
||||
let mut id = [0; 16];
|
||||
id[..8].copy_from_slice(&queue_id.to_be_bytes());
|
||||
@@ -315,7 +321,7 @@ impl MessageWrapper {
|
||||
let (flags, event, train_spam) = match source {
|
||||
MessageSource::Authenticated => (
|
||||
FROM_AUTHENTICATED,
|
||||
trc::QueueEvent::QueueMessageAuthenticated,
|
||||
trc::QueueEvent::AuthenticatedMessageQueued,
|
||||
None,
|
||||
),
|
||||
MessageSource::Unauthenticated {
|
||||
@@ -323,7 +329,7 @@ impl MessageWrapper {
|
||||
train_spam,
|
||||
} => (
|
||||
FROM_UNAUTHENTICATED_DMARC,
|
||||
trc::QueueEvent::QueueMessage,
|
||||
trc::QueueEvent::MessageQueued,
|
||||
train_spam,
|
||||
),
|
||||
MessageSource::Unauthenticated {
|
||||
@@ -331,14 +337,14 @@ impl MessageWrapper {
|
||||
train_spam,
|
||||
} => (
|
||||
FROM_UNAUTHENTICATED,
|
||||
trc::QueueEvent::QueueMessage,
|
||||
trc::QueueEvent::MessageQueued,
|
||||
train_spam,
|
||||
),
|
||||
MessageSource::Dsn => (FROM_DSN, trc::QueueEvent::QueueDsn, None),
|
||||
MessageSource::Report => (FROM_REPORT, trc::QueueEvent::QueueReport, None),
|
||||
MessageSource::Dsn => (FROM_DSN, trc::QueueEvent::DsnQueued, None),
|
||||
MessageSource::Report => (FROM_REPORT, trc::QueueEvent::ReportQueued, None),
|
||||
MessageSource::Autogenerated => (
|
||||
FROM_AUTOGENERATED,
|
||||
trc::QueueEvent::QueueAutogenerated,
|
||||
trc::QueueEvent::AutogeneratedQueued,
|
||||
None,
|
||||
),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user