commit f06b6bb3227fe840b1609dbe3307c3bfc958346d
Author: Oswald Buddenhagen <o...@kde.org>
Date:   Sun Apr 3 16:29:18 2011 +0200

    don't call cancel() repeatedly on a store
    
    erroring command replies will trickle in even after canceling

 src/sync.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/sync.c b/src/sync.c
index 880ecfd..9b8a025 100644
--- a/src/sync.c
+++ b/src/sync.c
@@ -179,7 +179,8 @@ typedef struct {
 #define ST_SENT_FLAGS      (1<<3)
 #define ST_SENT_TRASH      (1<<4)
 #define ST_CLOSED          (1<<5)
-#define ST_CANCELED        (1<<6)
+#define ST_SENT_CANCEL     (1<<6)
+#define ST_CANCELED        (1<<7)
 
 #define ST_DID_EXPUNGE     (1<<16)
 
@@ -395,7 +396,9 @@ cancel_sync( sync_vars_t *svars )
                if (svars->ret & SYNC_BAD(t)) {
                        svars->drv[t]->cancel_store( svars->ctx[t] );
                        cancel_done( AUX );
-               } else {
+               } else if (!(svars->state[t] & ST_SENT_CANCEL)) {
+                       /* ignore subsequent failures from in-flight commands */
+                       svars->state[t] |= ST_SENT_CANCEL;
                        svars->drv[t]->cancel( svars->ctx[t], cancel_done, AUX 
);
                }
 }

------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to