imap: small fixes

master
Manos Pitsidianakis 2020-07-24 22:05:01 +03:00
parent 00acba7717
commit 5a5408ecd5
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
3 changed files with 13 additions and 8 deletions

View File

@ -682,6 +682,13 @@ impl MailBackend for ImapType {
{
let mailboxes = uid_store.mailboxes.lock().await;
if mailboxes.values().any(|f| f.path == path) {
return Err(MeliError::new(format!(
"Mailbox named `{}` already exists.",
path,
)));
}
for root_mailbox in mailboxes.values().filter(|f| f.parent.is_none()) {
if path.starts_with(&root_mailbox.name) {
debug!("path starts with {:?}", &root_mailbox);
@ -693,12 +700,8 @@ impl MailBackend for ImapType {
}
}
if mailboxes.values().any(|f| f.path == path) {
return Err(MeliError::new(format!(
"Mailbox named `{}` already exists.",
path,
)));
}
/* FIXME Do not try to CREATE a sub-mailbox in a mailbox that has the \Noinferiors
* flag set. */
}
let mut response = String::with_capacity(8 * 1024);
@ -1387,7 +1390,6 @@ async fn fetch_hlpr(
permissions.set_flags = !examine_response.read_only;
permissions.rename_messages = !examine_response.read_only;
permissions.delete_messages = !examine_response.read_only;
permissions.delete_messages = !examine_response.read_only;
mailbox_exists
.lock()
.unwrap()

View File

@ -525,10 +525,12 @@ impl ImapConnection {
ret.push_str(&response);
}
ImapResponse::No(ref response_code) => {
//FIXME return error
debug!("Received NO response: {:?} {:?}", response_code, response);
ret.push_str(&response);
}
ImapResponse::Bad(ref response_code) => {
//FIXME return error
debug!("Received BAD response: {:?} {:?}", response_code, response);
ret.push_str(&response);
}

View File

@ -539,6 +539,7 @@ pub fn uid_fetch_response(input: &str) -> ImapParseResult<UidFetchResponse<'_>>
let mut has_attachments = false;
while i < input.len() {
eat_whitespace!(break);
bounds!(break);
if input[i..].starts_with("UID ") {
i += "UID ".len();
@ -877,12 +878,12 @@ pub enum UntaggedResponse {
}
pub fn untagged_responses(input: &[u8]) -> IResult<&[u8], Option<UntaggedResponse>> {
debug!("Parse untagged response from {:?}", to_str!(input));
let (input, _) = tag("* ")(input)?;
let (input, num) = map_res(digit1, |s| usize::from_str(to_str!(s)))(input)?;
let (input, _) = tag(" ")(input)?;
let (input, _tag) = take_until("\r\n")(input)?;
let (input, _) = tag("\r\n")(input)?;
debug!("Parse untagged response from {:?}", to_str!(input));
Ok((input, {
use UntaggedResponse::*;
match _tag {