From 8235af9237474948bad47b341d53c16e4e6c6f86 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Tue, 10 Dec 2019 23:56:25 +0200 Subject: [PATCH] melib/imap: quote mailbox names on SELECT/EXAMINE --- melib/src/backends/imap.rs | 6 +++--- melib/src/backends/imap/operations.rs | 2 +- melib/src/backends/imap/watch.rs | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/melib/src/backends/imap.rs b/melib/src/backends/imap.rs index 6b991e63d..f9f771486 100644 --- a/melib/src/backends/imap.rs +++ b/melib/src/backends/imap.rs @@ -179,7 +179,7 @@ impl MailBackend for ImapType { /* first SELECT the mailbox to get READ/WRITE permissions (because EXAMINE only * returns READ-ONLY for both cases) */ exit_on_error!(&tx, - conn.send_command(format!("SELECT {}", folder_path).as_bytes()) + conn.send_command(format!("SELECT \"{}\"", folder_path).as_bytes()) conn.read_response(&mut response) ); let examine_response = protocol_parser::select_response(&response); @@ -211,7 +211,7 @@ impl MailBackend for ImapType { } /* reselecting the same mailbox with EXAMINE prevents expunging it */ exit_on_error!(&tx, - conn.send_command(format!("EXAMINE {}", folder_path).as_bytes()) + conn.send_command(format!("EXAMINE \"{}\"", folder_path).as_bytes()) conn.read_response(&mut response) ); @@ -618,7 +618,7 @@ impl ImapType { let folders_lck = self.folders.read()?; let mut response = String::with_capacity(8 * 1024); let mut conn = self.connection.lock()?; - conn.send_command(format!("EXAMINE {}", folders_lck[&folder_hash].path()).as_bytes())?; + conn.send_command(format!("EXAMINE \"{}\"", folders_lck[&folder_hash].path()).as_bytes())?; conn.read_response(&mut response)?; conn.send_command(format!("UID SEARCH CHARSET UTF-8 {}", query).as_bytes())?; conn.read_response(&mut response)?; diff --git a/melib/src/backends/imap/operations.rs b/melib/src/backends/imap/operations.rs index 10aab9aa9..d3e8847d2 100644 --- a/melib/src/backends/imap/operations.rs +++ b/melib/src/backends/imap/operations.rs @@ -78,7 +78,7 @@ impl BackendOp for ImapOp { let mut response = String::with_capacity(8 * 1024); { let mut conn = self.connection.lock().unwrap(); - conn.send_command(format!("SELECT {}", self.folder_path).as_bytes())?; + conn.send_command(format!("SELECT \"{}\"", &self.folder_path,).as_bytes())?; conn.read_response(&mut response)?; conn.send_command(format!("UID FETCH {} (FLAGS RFC822)", self.uid).as_bytes())?; conn.read_response(&mut response)?; diff --git a/melib/src/backends/imap/watch.rs b/melib/src/backends/imap/watch.rs index 9c69da03a..7dcbc3374 100644 --- a/melib/src/backends/imap/watch.rs +++ b/melib/src/backends/imap/watch.rs @@ -148,7 +148,7 @@ pub fn idle(kit: ImapWatchKit) -> Result<()> { folder_hash, work_context, thread_id, - conn.send_command(format!("SELECT {}", folder.path()).as_bytes()) + conn.send_command(format!("SELECT \"{}\"", folder.path()).as_bytes()) conn.read_response(&mut response) ); debug!("select response {}", &response); @@ -519,7 +519,7 @@ fn examine_updates( folder_hash, work_context, thread_id, - conn.send_command(format!("EXAMINE {}", folder.path()).as_bytes()) + conn.send_command(format!("EXAMINE \"{}\"", folder.path()).as_bytes()) conn.read_response(&mut response) ); match protocol_parser::select_response(&response) {