[evolution-data-server] Bug 720197 - [IMAPx] Indefinite waiting for message download



commit e3aa112ae95e44a752c5981836aa9f5e4983a379
Author: Milan Crha <mcrha redhat com>
Date:   Tue Mar 3 12:51:38 2015 +0100

    Bug 720197 - [IMAPx] Indefinite waiting for message download

 camel/providers/imapx/camel-imapx-server.c |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 3020c37..cf5aa15 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -1025,8 +1025,7 @@ static void
 imapx_unregister_job (CamelIMAPXServer *is,
                       CamelIMAPXJob *job)
 {
-       if (!job->noreply)
-               camel_imapx_job_done (job);
+       camel_imapx_job_done (job);
 
        QUEUE_LOCK (is);
 
@@ -1045,10 +1044,17 @@ imapx_submit_job (CamelIMAPXServer *is,
                   CamelIMAPXJob *job,
                   GError **error)
 {
+       gboolean success;
+
        if (!imapx_register_job (is, job, error))
                return FALSE;
 
-       return camel_imapx_job_run (job, is, error);
+       success = camel_imapx_job_run (job, is, error);
+
+       if (!success)
+               imapx_unregister_job (is, job);
+
+       return success;
 }
 
 static CamelFolder *
@@ -8383,6 +8389,8 @@ imapx_server_get_message (CamelIMAPXServer *is,
 
        if (registered && camel_imapx_job_run (job, is, error))
                stream = camel_stream_new (data->stream);
+       else if (registered)
+               imapx_unregister_job (is, job);
 
        camel_imapx_job_unref (job);
 
@@ -8759,6 +8767,8 @@ camel_imapx_server_refresh_info (CamelIMAPXServer *is,
        if (registered && camel_imapx_job_run (job, is, error)) {
                changes = data->changes;
                data->changes = NULL;
+       } else if (registered) {
+               imapx_unregister_job (is, job);
        }
 
        if (registered)
@@ -9096,6 +9106,9 @@ imapx_server_sync_changes (CamelIMAPXServer *is,
 
        success = registered && camel_imapx_job_run (job, is, error);
 
+       if (!success && registered)
+               imapx_unregister_job (is, job);
+
        if (job_type == IMAPX_JOB_SYNC_CHANGES && registered)
                camel_imapx_mailbox_unlock_update (mailbox);
 
@@ -9160,6 +9173,9 @@ camel_imapx_server_expunge (CamelIMAPXServer *is,
 
        success = registered && camel_imapx_job_run (job, is, error);
 
+       if (!success && registered)
+               imapx_unregister_job (is, job);
+
        camel_imapx_job_unref (job);
 
        return success;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]