2007-03-20 [colin] 2.8.1cvs23
[claws.git] / src / imap.c
index 4a7a25b242727e25ec491f738174a17273f364b4..faf71ffb43be9be14a3c1d51e14f185c478af06c 100644 (file)
@@ -723,14 +723,19 @@ static IMAPSession *imap_session_get(Folder *folder)
        /* Make sure we have a session */
        if (rfolder->session != NULL) {
                session = IMAP_SESSION(rfolder->session);
+       } else if (rfolder->connecting) {
+               debug_print("already connecting\n");
+               return NULL;
        } else {
                imap_reset_uid_lists(folder);
                if (time(NULL) - rfolder->last_failure <= 2)
                        return NULL;
+               rfolder->connecting = TRUE;
                session = imap_session_new(folder, folder->account);
        }
        if(session == NULL) {
                rfolder->last_failure = time(NULL);
+               rfolder->connecting = FALSE;
                return NULL;
        }
 
@@ -744,6 +749,7 @@ static IMAPSession *imap_session_get(Folder *folder)
                session_destroy(SESSION(session));
                rfolder->session = NULL;
                rfolder->last_failure = time(NULL);
+               rfolder->connecting = FALSE;
                return NULL;
        }
 
@@ -766,6 +772,7 @@ static IMAPSession *imap_session_get(Folder *folder)
        }
 
        rfolder->session = SESSION(session);
+       rfolder->connecting = FALSE;
 
        return IMAP_SESSION(session);
 }