commit e2df32e9a8657c3f39a6d5279a8c8cb414858a09
Author: Oswald Buddenhagen <[email protected]>
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel