commit e2df32e9a8657c3f39a6d5279a8c8cb414858a09 Author: Oswald Buddenhagen <o...@users.sf.net> Date: Mon Jan 6 17:30:32 2020 +0100
*** de-dupe src/sync.c | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/src/sync.c b/src/sync.c index a6844c4..ea91719 100644 --- a/src/sync.c +++ b/src/sync.c @@ -254,6 +254,23 @@ jFprintf( sync_vars_t *svars, const char *msg, ... ) exit( 100 ); } +static void +assign_uid_raw( sync_rec_t *srec, uint uid, sync_vars_t *svars, int t ) +{ + srec->uid[t] = uid; + if (uid == svars->newmaxuid[t] + 1) + svars->newmaxuid[t] = uid; + srec->status &= ~S_PENDING; + srec->tuid[0] = 0; +} + +static void +assign_uid( sync_rec_t *srec, uint uid, sync_vars_t *svars, int t ) +{ + jFprintf( svars, "%c %u %u %u\n", "<>"[t], srec->uid[M], srec->uid[S], uid ); + assign_uid_raw( srec, uid, svars, t ); +} + static void match_tuids( sync_vars_t *svars, int t, message_t *msgs ) { @@ -291,15 +308,10 @@ match_tuids( sync_vars_t *svars, int t, message_t *msgs ) continue; mfound: debug( " -> new UID %u %s\n", tmsg->uid, diag ); - jFprintf( svars, "%c %u %u %u\n", "<>"[t], srec->uid[M], srec->uid[S], tmsg->uid ); tmsg->srec = srec; srec->msg[t] = tmsg; ntmsg = tmsg->next; - srec->uid[t] = tmsg->uid; - if (tmsg->uid == svars->newmaxuid[t] + 1) - svars->newmaxuid[t] = tmsg->uid; - srec->status = 0; - srec->tuid[0] = 0; + assign_uid( srec, tmsg->uid, svars, t ); } } if (num_lost) @@ -973,18 +985,13 @@ load_state( sync_vars_t *svars ) srec->tuid[0] = 0; break; case '<': - tn = M; - assuid: - debug( "%s now %u\n", str_ms[tn], t3 ); - srec->uid[tn] = t3; - if (t3 == svars->newmaxuid[tn] + 1) - svars->newmaxuid[tn] = t3; - srec->status &= ~S_PENDING; - srec->tuid[0] = 0; + debug( "master now %u\n", t3 ); + assign_uid_raw( srec, t3, svars, M ); break; case '>': - tn = S; - goto assuid; + debug( "slave now %u\n", t3 ); + assign_uid_raw( srec, t3, svars, S ); + break; case '*': debug( "flags now %u\n", t3 ); srec->flags = (uchar)t3; @@ -1885,12 +1892,7 @@ msg_copied( int sts, uint uid, copy_vars_t *vars ) svars->state[t] |= ST_FIND_NEW; } else { debug( " -> new UID %u on %s\n", uid, str_ms[t] ); - jFprintf( svars, "%c %u %u %u\n", "<>"[t], srec->uid[M], srec->uid[S], uid ); - srec->uid[t] = uid; - if (uid == svars->newmaxuid[t] + 1) - svars->newmaxuid[t] = uid; - srec->status &= ~S_PENDING; - srec->tuid[0] = 0; + assign_uid( srec, uid, svars, t ); } break; case SYNC_NOGOOD: _______________________________________________ isync-devel mailing list isync-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/isync-devel