mirror of
https://github.com/chatmail/core.git
synced 2026-05-07 17:06:35 +03:00
intermediate wip commit
This commit is contained in:
@@ -1006,6 +1006,7 @@ pub unsafe fn dc_job_kill_action(context: &Context, action: libc::c_int) {
|
|||||||
|
|
||||||
pub unsafe fn dc_perform_imap_fetch(context: &Context) {
|
pub unsafe fn dc_perform_imap_fetch(context: &Context) {
|
||||||
let inbox = context.inbox.read().unwrap();
|
let inbox = context.inbox.read().unwrap();
|
||||||
|
info!(context, 0, "dc_perform_imap_fetch got inbox");
|
||||||
|
|
||||||
let start: libc::clock_t = clock();
|
let start: libc::clock_t = clock();
|
||||||
if 0 == connect_to_inbox(context, &inbox) {
|
if 0 == connect_to_inbox(context, &inbox) {
|
||||||
|
|||||||
16
src/imap.rs
16
src/imap.rs
@@ -468,6 +468,7 @@ impl Imap {
|
|||||||
|
|
||||||
fn unsetup_handle(&self, context: &Context) {
|
fn unsetup_handle(&self, context: &Context) {
|
||||||
info!(context, 0, "IMAP unsetup_handle starts");
|
info!(context, 0, "IMAP unsetup_handle starts");
|
||||||
|
self.interrupt_idle();
|
||||||
let session = self.session.lock().unwrap().0.take();
|
let session = self.session.lock().unwrap().0.take();
|
||||||
if session.is_some() {
|
if session.is_some() {
|
||||||
match session.unwrap().close() {
|
match session.unwrap().close() {
|
||||||
@@ -548,6 +549,17 @@ impl Imap {
|
|||||||
match self.session.lock().unwrap().0 {
|
match self.session.lock().unwrap().0 {
|
||||||
Some(ref mut session) => {
|
Some(ref mut session) => {
|
||||||
if let Ok(caps) = session.capabilities() {
|
if let Ok(caps) = session.capabilities() {
|
||||||
|
if !context.sql.is_open() {
|
||||||
|
warn!(
|
||||||
|
context,
|
||||||
|
0,
|
||||||
|
"IMAP-LOGIN as {} ok but ABORTING",
|
||||||
|
as_str(lp.mail_user),
|
||||||
|
);
|
||||||
|
self.unsetup_handle(context);
|
||||||
|
self.free_connect_params();
|
||||||
|
0
|
||||||
|
} else {
|
||||||
let can_idle = caps.has("IDLE");
|
let can_idle = caps.has("IDLE");
|
||||||
let has_xlist = caps.has("XLIST");
|
let has_xlist = caps.has("XLIST");
|
||||||
|
|
||||||
@@ -570,8 +582,8 @@ impl Imap {
|
|||||||
config.can_idle = can_idle;
|
config.can_idle = can_idle;
|
||||||
config.has_xlist = has_xlist;
|
config.has_xlist = has_xlist;
|
||||||
*self.connected.lock().unwrap() = true;
|
*self.connected.lock().unwrap() = true;
|
||||||
|
|
||||||
1
|
1
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.unsetup_handle(context);
|
self.unsetup_handle(context);
|
||||||
self.free_connect_params();
|
self.free_connect_params();
|
||||||
@@ -599,7 +611,7 @@ impl Imap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn fetch(&self, context: &Context) -> libc::c_int {
|
pub fn fetch(&self, context: &Context) -> libc::c_int {
|
||||||
if !self.is_connected() {
|
if !self.is_connected() || !context.sql.is_open() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user