commit 608a2863e04c8b14ef9a03e48db4fdd0c55ceaab
Author: Oswald Buddenhagen <o...@users.sf.net>
Date:   Sat Mar 21 16:05:51 2009 +0000

    handle failure to store message. this helps with invalid messages like
    0-byte files after crashes.

 src/drv_imap.c |    1 +
 src/sync.c     |   14 ++++++++++++++
 2 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/drv_imap.c b/src/drv_imap.c
index 9520cdd..dbdb1b1 100644
--- a/src/drv_imap.c
+++ b/src/drv_imap.c
@@ -1586,6 +1586,7 @@ imap_store_msg( store_t *gctx, msg_data_t *data, int *uid 
)
                        }
                /* invalid message */
                free( fmap );
+               fprintf( stderr, "IMAP warning: storing message with incomplete 
header.\n" );
                return DRV_MSG_BAD;
         mktid:
                for (j = 0; j < TUIDL; j++)
diff --git a/src/sync.c b/src/sync.c
index 59035b6..5a5d247 100644
--- a/src/sync.c
+++ b/src/sync.c
@@ -301,6 +301,13 @@ sync_old( int tops, store_t *sctx, store_t *tctx, 
store_conf_t *tconf, FILE *jfp
                                        case DRV_OK:
                                                smsg->flags = msgdata.flags;
                                                switch (tdriver->store_msg( 
tctx, &msgdata, &uid )) {
+                                               case DRV_MSG_BAD:
+                                                       warn( pull ?
+                                                             "Warning: Slave 
refuses to store message %d from master.\n" :
+                                                             "Warning: Master 
refuses to store message %d from slave.\n",
+                                                             smsg->uid );
+                                                       smsg->status |= 
M_NOT_SYNCED;
+                                                       break;
                                                case DRV_STORE_BAD: return pull 
? SYNC_SLAVE_BAD : SYNC_MASTER_BAD;
                                                default: return SYNC_FAIL;
                                                case DRV_OK:
@@ -399,6 +406,13 @@ sync_new( int tops, store_t *sctx, store_t *tctx, 
store_conf_t *tconf, FILE *jfp
                                                }
                                                msg->flags = msgdata.flags;
                                                switch (tdriver->store_msg( 
tctx, &msgdata, &uid )) {
+                                               case DRV_MSG_BAD:
+                                                       warn( pull ?
+                                                             "Warning: Slave 
refuses to store message %d from master.\n" :
+                                                             "Warning: Master 
refuses to store message %d from slave.\n",
+                                                             msg->uid );
+                                                       msg->status |= 
M_NOT_SYNCED;
+                                                       continue;
                                                case DRV_STORE_BAD: return pull 
? SYNC_SLAVE_BAD : SYNC_MASTER_BAD;
                                                default: return SYNC_FAIL;
                                                case DRV_OK: break;

------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to