cleanup imap and smtp code a bit

This commit is contained in:
dignifiedquire
2019-05-07 19:53:31 +01:00
parent d6ad9bb727
commit 924597fa36
6 changed files with 15 additions and 41 deletions

View File

@@ -1751,10 +1751,7 @@ pub unsafe fn dc_alloc_ongoing(context: &dc_context_t) -> libc::c_int {
1 1
} }
pub unsafe fn dc_connect_to_configured_imap( pub unsafe fn dc_connect_to_configured_imap(context: &dc_context_t, imap: &Imap) -> libc::c_int {
context: &dc_context_t,
imap: &dc_imap_t,
) -> libc::c_int {
let mut ret_connected: libc::c_int = 0i32; let mut ret_connected: libc::c_int = 0i32;
let mut param: *mut dc_loginparam_t = dc_loginparam_new(); let mut param: *mut dc_loginparam_t = dc_loginparam_new();
if imap.is_connected() { if imap.is_connected() {

View File

@@ -28,7 +28,7 @@ pub struct dc_context_t {
pub dbfile: Arc<RwLock<*mut libc::c_char>>, pub dbfile: Arc<RwLock<*mut libc::c_char>>,
pub blobdir: Arc<RwLock<*mut libc::c_char>>, pub blobdir: Arc<RwLock<*mut libc::c_char>>,
pub sql: Arc<RwLock<dc_sqlite3_t>>, pub sql: Arc<RwLock<dc_sqlite3_t>>,
pub inbox: Arc<RwLock<dc_imap_t>>, pub inbox: Arc<RwLock<Imap>>,
pub perform_inbox_jobs_needed: Arc<RwLock<i32>>, pub perform_inbox_jobs_needed: Arc<RwLock<i32>>,
pub probe_imap_network: Arc<RwLock<i32>>, pub probe_imap_network: Arc<RwLock<i32>>,
pub sentbox_thread: Arc<Mutex<dc_jobthread_t>>, pub sentbox_thread: Arc<Mutex<dc_jobthread_t>>,
@@ -132,7 +132,7 @@ pub fn dc_context_new(
blobdir: Arc::new(RwLock::new(std::ptr::null_mut())), blobdir: Arc::new(RwLock::new(std::ptr::null_mut())),
dbfile: Arc::new(RwLock::new(std::ptr::null_mut())), dbfile: Arc::new(RwLock::new(std::ptr::null_mut())),
inbox: Arc::new(RwLock::new({ inbox: Arc::new(RwLock::new({
dc_imap_new( Imap::new(
cb_get_config, cb_get_config,
cb_set_config, cb_set_config,
cb_precheck_imf, cb_precheck_imf,
@@ -154,7 +154,7 @@ pub fn dc_context_new(
dc_jobthread_init( dc_jobthread_init(
b"SENTBOX\x00" as *const u8 as *const libc::c_char, b"SENTBOX\x00" as *const u8 as *const libc::c_char,
b"configured_sentbox_folder\x00" as *const u8 as *const libc::c_char, b"configured_sentbox_folder\x00" as *const u8 as *const libc::c_char,
dc_imap_new( Imap::new(
cb_get_config, cb_get_config,
cb_set_config, cb_set_config,
cb_precheck_imf, cb_precheck_imf,
@@ -166,7 +166,7 @@ pub fn dc_context_new(
dc_jobthread_init( dc_jobthread_init(
b"MVBOX\x00" as *const u8 as *const libc::c_char, b"MVBOX\x00" as *const u8 as *const libc::c_char,
b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char, b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char,
dc_imap_new( Imap::new(
cb_get_config, cb_get_config,
cb_set_config, cb_set_config,
cb_precheck_imf, cb_precheck_imf,

View File

@@ -21,7 +21,7 @@ const BODY_FLAGS: &'static str = "(FLAGS BODY.PEEK[])";
const FETCH_FLAGS: &'static str = "(FLAGS)"; const FETCH_FLAGS: &'static str = "(FLAGS)";
#[repr(C)] #[repr(C)]
pub struct dc_imap_t { pub struct Imap {
config: Arc<RwLock<ImapConfig>>, config: Arc<RwLock<ImapConfig>>,
watch: Arc<(Mutex<bool>, Condvar)>, watch: Arc<(Mutex<bool>, Condvar)>,
@@ -312,23 +312,14 @@ impl Default for ImapConfig {
} }
} }
pub fn dc_imap_new( impl Imap {
get_config: dc_get_config_t,
set_config: dc_set_config_t,
precheck_imf: dc_precheck_imf_t,
receive_imf: dc_receive_imf_t,
) -> dc_imap_t {
dc_imap_t::new(get_config, set_config, precheck_imf, receive_imf)
}
impl dc_imap_t {
pub fn new( pub fn new(
get_config: dc_get_config_t, get_config: dc_get_config_t,
set_config: dc_set_config_t, set_config: dc_set_config_t,
precheck_imf: dc_precheck_imf_t, precheck_imf: dc_precheck_imf_t,
receive_imf: dc_receive_imf_t, receive_imf: dc_receive_imf_t,
) -> Self { ) -> Self {
dc_imap_t { Imap {
session: Arc::new(Mutex::new(None)), session: Arc::new(Mutex::new(None)),
// idle: Arc::new(Mutex::new(None)), // idle: Arc::new(Mutex::new(None)),
config: Arc::new(RwLock::new(ImapConfig::default())), config: Arc::new(RwLock::new(ImapConfig::default())),

View File

@@ -554,7 +554,7 @@ unsafe fn dc_job_do_DC_JOB_MOVE_MSG(context: &dc_context_t, job: &mut dc_job_t)
/* ****************************************************************************** /* ******************************************************************************
* IMAP-jobs * IMAP-jobs
******************************************************************************/ ******************************************************************************/
unsafe fn connect_to_inbox(context: &dc_context_t, inbox: &dc_imap_t) -> libc::c_int { unsafe fn connect_to_inbox(context: &dc_context_t, inbox: &Imap) -> libc::c_int {
let mut ret_connected: libc::c_int; let mut ret_connected: libc::c_int;
ret_connected = dc_connect_to_configured_imap(context, inbox); ret_connected = dc_connect_to_configured_imap(context, inbox);

View File

@@ -2,7 +2,7 @@ use std::sync::{Arc, Condvar, Mutex};
use crate::dc_configure::*; use crate::dc_configure::*;
use crate::dc_context::dc_context_t; use crate::dc_context::dc_context_t;
use crate::dc_imap::dc_imap_t; use crate::dc_imap::Imap;
use crate::dc_log::*; use crate::dc_log::*;
use crate::dc_sqlite3::*; use crate::dc_sqlite3::*;
use crate::dc_tools::*; use crate::dc_tools::*;
@@ -13,14 +13,14 @@ use crate::x::*;
pub struct dc_jobthread_t { pub struct dc_jobthread_t {
pub name: *mut libc::c_char, pub name: *mut libc::c_char,
pub folder_config_name: *mut libc::c_char, pub folder_config_name: *mut libc::c_char,
pub imap: dc_imap_t, pub imap: Imap,
pub state: Arc<(Mutex<JobState>, Condvar)>, pub state: Arc<(Mutex<JobState>, Condvar)>,
} }
pub unsafe fn dc_jobthread_init( pub unsafe fn dc_jobthread_init(
name: *const libc::c_char, name: *const libc::c_char,
folder_config_name: *const libc::c_char, folder_config_name: *const libc::c_char,
imap: dc_imap_t, imap: Imap,
) -> dc_jobthread_t { ) -> dc_jobthread_t {
dc_jobthread_t { dc_jobthread_t {
name: dc_strdup(name), name: dc_strdup(name),

View File

@@ -54,14 +54,7 @@ impl Smtp {
} }
if self.is_connected() { if self.is_connected() {
unsafe { warn!(context, 0, "SMTP already connected.");
dc_log_warning(
context,
0,
b"SMTP already connected.\x00" as *const u8 as *const libc::c_char,
)
};
return 1; return 1;
} }
@@ -140,7 +133,7 @@ impl Smtp {
let client = lettre::smtp::SmtpClient::new((domain, port), security) let client = lettre::smtp::SmtpClient::new((domain, port), security)
.expect("failed to construct stmp client") .expect("failed to construct stmp client")
// .smtp_utf8(true) .smtp_utf8(true)
.credentials(creds) .credentials(creds)
.connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited); .connection_reuse(lettre::smtp::ConnectionReuseParameters::ReuseUnlimited);
@@ -182,14 +175,7 @@ impl Smtp {
let msg = CString::new(error_msg).unwrap(); let msg = CString::new(error_msg).unwrap();
self.error = unsafe { libc::strdup(msg.as_ptr()) }; self.error = unsafe { libc::strdup(msg.as_ptr()) };
unsafe { warn!(context, 0, "%s", msg,);
dc_log_warning(
context,
0,
b"%s\x00" as *const u8 as *const libc::c_char,
msg,
);
}
0 0
} }