aboutsummaryrefslogtreecommitdiff
path: root/src/middleware/find_mailboxes_compatibility.rs
blob: 04bc8343a8fe301b5610b7cfe8607ace146a9aba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use log::debug;

/// `MailDrop` can't find folders to sync because it sends FIND MAILBOXES /*
/// which is not understood by modern servers. It instead replaces it with
/// a LIST command.
pub fn middleware(input: &[u8]) -> Vec<u8> {
    let command = String::from_utf8_lossy(input);
    if let Some(tag) = command.split("FIND MAILBOXES /*").next() {
        let replacement = format!("{} LIST \"/INBOX\" \"*\"\r\n", tag.trim());
        debug!("### {replacement}");
        return replacement.into_bytes();
    }
    input.to_vec()
}