Skip to content

Commit 877f873

Browse files
committed
feat: add more IMAP logging
E.g. log when the folder is selected.
1 parent 53fa014 commit 877f873

File tree

4 files changed

+35
-21
lines changed

4 files changed

+35
-21
lines changed

python/tests/test_1_online.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,7 +1617,7 @@ def test_immediate_autodelete(acfactory, lp):
16171617

16181618
lp.sec("ac2: wait for close/expunge on autodelete")
16191619
ac2._evtracker.get_matching("DC_EVENT_IMAP_MESSAGE_DELETED")
1620-
ac2._evtracker.get_info_contains("close/expunge succeeded")
1620+
ac2._evtracker.get_info_contains("Close/expunge succeeded.")
16211621

16221622
lp.sec("ac2: check that message was autodeleted on server")
16231623
assert len(ac2.direct_imap.get_all_messages()) == 0
@@ -1653,7 +1653,7 @@ def test_delete_multiple_messages(acfactory, lp):
16531653
lp.sec("ac2: test that only one message is left")
16541654
while 1:
16551655
ac2._evtracker.get_matching("DC_EVENT_IMAP_MESSAGE_DELETED")
1656-
ac2._evtracker.get_info_contains("close/expunge succeeded")
1656+
ac2._evtracker.get_info_contains("Close/expunge succeeded.")
16571657
ac2.direct_imap.select_config_folder("inbox")
16581658
nr_msgs = len(ac2.direct_imap.get_all_messages())
16591659
assert nr_msgs > 0

src/imap.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ impl Imap {
324324
}
325325
}
326326

327-
info!(context, "Connecting to IMAP server");
327+
info!(context, "Connecting to IMAP server.");
328328
self.connectivity.set_connecting(context).await;
329329

330330
self.conn_last_try = tools::Time::now();
@@ -409,7 +409,7 @@ impl Imap {
409409
lp.user
410410
)));
411411
self.connectivity.set_preparing(context).await;
412-
info!(context, "Successfully logged into IMAP server");
412+
info!(context, "Successfully logged into IMAP server.");
413413
return Ok(session);
414414
}
415415

@@ -1046,7 +1046,7 @@ impl Session {
10461046
// Expunge folder if needed, e.g. if some jobs have
10471047
// deleted messages on the server.
10481048
if let Err(err) = self.maybe_close_folder(context).await {
1049-
warn!(context, "failed to close folder: {:?}", err);
1049+
warn!(context, "Failed to close folder: {err:#}.");
10501050
}
10511051

10521052
Ok(())

src/imap/select_folder.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ impl ImapSession {
3333
pub(super) async fn maybe_close_folder(&mut self, context: &Context) -> anyhow::Result<()> {
3434
if let Some(folder) = &self.selected_folder {
3535
if self.selected_folder_needs_expunge {
36-
info!(context, "Expunge messages in \"{}\".", folder);
36+
info!(context, "Expunge messages in {folder:?}.");
3737

3838
self.close().await.context("IMAP close/expunge failed")?;
39-
info!(context, "close/expunge succeeded");
39+
info!(context, "Close/expunge succeeded.");
4040
self.selected_folder = None;
4141
self.selected_folder_needs_expunge = false;
4242
self.new_mail = false;
@@ -73,6 +73,7 @@ impl ImapSession {
7373

7474
match res {
7575
Ok(mailbox) => {
76+
info!(context, "Selected folder {folder:?}.");
7677
self.selected_folder = Some(folder.to_string());
7778
self.selected_mailbox = Some(mailbox);
7879
Ok(NewlySelected::Yes)
@@ -94,7 +95,7 @@ impl ImapSession {
9495
Ok(newly_selected) => Ok(newly_selected),
9596
Err(err) => match err {
9697
Error::NoFolder(..) => {
97-
info!(context, "Failed to select folder {} because it does not exist, trying to create it.", folder);
98+
info!(context, "Failed to select folder {folder:?} because it does not exist, trying to create it.");
9899
let create_res = self.create(folder).await;
99100
if let Err(ref err) = create_res {
100101
info!(context, "Couldn't select folder, then create() failed: {err:#}.");
@@ -129,30 +130,30 @@ impl ImapSession {
129130
let newly_selected = if create {
130131
self.select_or_create_folder(context, folder)
131132
.await
132-
.with_context(|| format!("failed to select or create folder {folder}"))?
133+
.with_context(|| format!("Failed to select or create folder {folder:?}"))?
133134
} else {
134135
match self.select_folder(context, folder).await {
135136
Ok(newly_selected) => newly_selected,
136137
Err(err) => match err {
137138
Error::NoFolder(..) => return Ok(false),
138139
_ => {
139140
return Err(err)
140-
.with_context(|| format!("failed to select folder {folder}"))?
141+
.with_context(|| format!("Failed to select folder {folder:?}"))?
141142
}
142143
},
143144
}
144145
};
145146
let mailbox = self
146147
.selected_mailbox
147148
.as_mut()
148-
.with_context(|| format!("No mailbox selected, folder: {folder}"))?;
149+
.with_context(|| format!("No mailbox selected, folder: {folder:?}"))?;
149150

150151
let old_uid_validity = get_uidvalidity(context, folder)
151152
.await
152-
.with_context(|| format!("failed to get old UID validity for folder {folder}"))?;
153+
.with_context(|| format!("Failed to get old UID validity for folder {folder:?}"))?;
153154
let old_uid_next = get_uid_next(context, folder)
154155
.await
155-
.with_context(|| format!("failed to get old UID NEXT for folder {folder}"))?;
156+
.with_context(|| format!("Failed to get old UID NEXT for folder {folder:?}"))?;
156157

157158
let new_uid_validity = mailbox
158159
.uid_validity

src/scheduler.rs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ async fn inbox_loop(
386386
) {
387387
use futures::future::FutureExt;
388388

389-
info!(ctx, "starting inbox loop");
389+
info!(ctx, "Starting inbox loop.");
390390
let ImapConnectionHandlers {
391391
mut connection,
392392
stop_receiver,
@@ -396,7 +396,7 @@ async fn inbox_loop(
396396
let fut = async move {
397397
let ctx = ctx1;
398398
if let Err(()) = started.send(()) {
399-
warn!(ctx, "inbox loop, missing started receiver");
399+
warn!(ctx, "Inbox loop, missing started receiver.");
400400
return;
401401
};
402402

@@ -405,18 +405,23 @@ async fn inbox_loop(
405405
let session = if let Some(session) = old_session.take() {
406406
session
407407
} else {
408+
info!(ctx, "Preparing new IMAP session for inbox.");
408409
match connection.prepare(&ctx).await {
409410
Err(err) => {
410-
warn!(ctx, "Failed to prepare INBOX connection: {:#}.", err);
411+
warn!(ctx, "Failed to prepare inbox connection: {err:#}.");
411412
continue;
412413
}
413414
Ok(session) => session,
414415
}
415416
};
416417

417418
match inbox_fetch_idle(&ctx, &mut connection, session).await {
418-
Err(err) => warn!(ctx, "Failed fetch_idle: {err:#}"),
419+
Err(err) => warn!(ctx, "Failed inbox fetch_idle: {err:#}."),
419420
Ok(session) => {
421+
info!(
422+
ctx,
423+
"IMAP loop iteration for inbox finished, keeping the session."
424+
);
420425
old_session = Some(session);
421426
}
422427
}
@@ -426,7 +431,7 @@ async fn inbox_loop(
426431
stop_receiver
427432
.recv()
428433
.map(|_| {
429-
info!(ctx, "shutting down inbox loop");
434+
info!(ctx, "Shutting down inbox loop.");
430435
})
431436
.race(fut)
432437
.await;
@@ -695,7 +700,7 @@ async fn simple_imap_loop(
695700
) {
696701
use futures::future::FutureExt;
697702

698-
info!(ctx, "starting simple loop for {}", folder_meaning);
703+
info!(ctx, "Starting simple loop for {folder_meaning}.");
699704
let ImapConnectionHandlers {
700705
mut connection,
701706
stop_receiver,
@@ -706,7 +711,10 @@ async fn simple_imap_loop(
706711
let fut = async move {
707712
let ctx = ctx1;
708713
if let Err(()) = started.send(()) {
709-
warn!(&ctx, "simple imap loop, missing started receiver");
714+
warn!(
715+
ctx,
716+
"Simple imap loop for {folder_meaning}, missing started receiver."
717+
);
710718
return;
711719
}
712720

@@ -715,6 +723,7 @@ async fn simple_imap_loop(
715723
let session = if let Some(session) = old_session.take() {
716724
session
717725
} else {
726+
info!(ctx, "Preparing new IMAP session for {folder_meaning}.");
718727
match connection.prepare(&ctx).await {
719728
Err(err) => {
720729
warn!(
@@ -730,6 +739,10 @@ async fn simple_imap_loop(
730739
match fetch_idle(&ctx, &mut connection, session, folder_meaning).await {
731740
Err(err) => warn!(ctx, "Failed fetch_idle: {err:#}"),
732741
Ok(session) => {
742+
info!(
743+
ctx,
744+
"IMAP loop iteration for {folder_meaning} finished, keeping the session"
745+
);
733746
old_session = Some(session);
734747
}
735748
}
@@ -739,7 +752,7 @@ async fn simple_imap_loop(
739752
stop_receiver
740753
.recv()
741754
.map(|_| {
742-
info!(ctx, "shutting down simple loop");
755+
info!(ctx, "Shutting down IMAP loop for {folder_meaning}.");
743756
})
744757
.race(fut)
745758
.await;

0 commit comments

Comments
 (0)