commit d3f6347021c39e753cad226c47cc5f0556bcc479
Author: Oswald Buddenhagen <[email protected]>
Date:   Sat Nov 23 15:55:02 2013 +0100

    delay propagation of new messages
    
    previous sequence:
      examine & propagate new => examine old => propagate old
    new sequence:
      examine new => examine old => propagate new => propagate old
    
    this alone does not buy us much ...

 src/sync.c |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/sync.c b/src/sync.c
index 5211cdb..24a3bb6 100644
--- a/src/sync.c
+++ b/src/sync.c
@@ -1193,7 +1193,6 @@ box_loaded( int sts, void *aux )
        debug( "synchronizing new entries\n" );
        svars->osrecadd = svars->srecadd;
        for (t = 0; t < 2; t++) {
-               Fprintf( svars->jfp, "%c %d\n", "{}"[t], svars->ctx[t]->uidnext 
);
                for (tmsg = svars->ctx[1-t]->msgs; tmsg; tmsg = tmsg->next) {
                        /* If we have a srec:
                         * - message is old (> 0) or expired (0) => ignore
@@ -1241,19 +1240,10 @@ box_loaded( int sts, void *aux )
                                                        t2 = arc4_getbyte() & 
0x3f;
                                                        srec->tuid[t1] = t2 < 
26 ? t2 + 'A' : t2 < 52 ? t2 + 'a' - 26 : t2 < 62 ? t2 + '0' - 52 : t2 == 62 ? 
'+' : '/';
                                                }
-                                               svars->new_total[t]++;
-                                               stats( svars );
-                                               cv = nfmalloc( sizeof(*cv) );
-                                               cv->cb = msg_copied;
-                                               cv->aux = AUX;
-                                               cv->srec = srec;
-                                               cv->msg = tmsg;
                                                Fprintf( svars->jfp, "# %d %d 
%." stringify(TUIDL) "s\n", srec->uid[M], srec->uid[S], srec->tuid );
                                                if (FSyncLevel >= 
FSYNC_THOROUGH)
                                                        fdatasync( fileno( 
svars->jfp ) );
                                                debug( "  -> %sing message, 
TUID %." stringify(TUIDL) "s\n", str_hl[t], srec->tuid );
-                                               if (copy_msg( cv ))
-                                                       return;
                                        } else {
                                                if (srec->uid[t] == -1) {
                                                        debug( "  -> not %sing 
- still too big\n", str_hl[t] );
@@ -1265,8 +1255,6 @@ box_loaded( int sts, void *aux )
                                }
                        }
                }
-               svars->state[t] |= ST_SENT_NEW;
-               msgs_copied( svars, t );
        }
 
        debug( "synchronizing old entries\n" );
@@ -1463,6 +1451,26 @@ box_loaded( int sts, void *aux )
                if (msgs_flags_set( svars, t ))
                        return;
        }
+
+       debug( "propagating new messages\n" );
+       for (t = 0; t < 2; t++) {
+               Fprintf( svars->jfp, "%c %d\n", "{}"[t], svars->ctx[t]->uidnext 
);
+               for (tmsg = svars->ctx[1-t]->msgs; tmsg; tmsg = tmsg->next) {
+                       if ((srec = tmsg->srec) && srec->tuid[0]) {
+                               svars->new_total[t]++;
+                               stats( svars );
+                               cv = nfmalloc( sizeof(*cv) );
+                               cv->cb = msg_copied;
+                               cv->aux = AUX;
+                               cv->srec = srec;
+                               cv->msg = tmsg;
+                               if (copy_msg( cv ))
+                                       return;
+                       }
+               }
+               svars->state[t] |= ST_SENT_NEW;
+               msgs_copied( svars, t );
+       }
 }
 
 static void

------------------------------------------------------------------------------
Sponsored by Intel(R) XDK 
Develop, test and display web and hybrid apps with a single code base.
Download it for free now!
http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel

Reply via email to