|
@@ -196,40 +196,6 @@ sync_boxes( store_t *ctx[], const char *names[], channel_conf_t *chan )
|
|
|
ret = SYNC_OK;
|
|
|
recs = 0, srecadd = &recs;
|
|
|
|
|
|
- opts[M] = opts[S] = 0;
|
|
|
- for (t = 0; t < 2; t++) {
|
|
|
- if (chan->ops[t] & (OP_DELETE|OP_FLAGS)) {
|
|
|
- opts[t] |= OPEN_SETFLAGS;
|
|
|
- opts[1-t] |= OPEN_OLD;
|
|
|
- if (chan->ops[t] & OP_FLAGS)
|
|
|
- opts[1-t] |= OPEN_FLAGS;
|
|
|
- }
|
|
|
- if (chan->ops[t] & (OP_NEW|OP_RENEW)) {
|
|
|
- opts[t] |= OPEN_APPEND;
|
|
|
- if (chan->ops[t] & OP_RENEW)
|
|
|
- opts[1-t] |= OPEN_OLD;
|
|
|
- if (chan->ops[t] & OP_NEW)
|
|
|
- opts[1-t] |= OPEN_NEW;
|
|
|
- if (chan->ops[t] & OP_EXPUNGE)
|
|
|
- opts[1-t] |= OPEN_FLAGS;
|
|
|
- if (chan->stores[t]->max_size)
|
|
|
- opts[1-t] |= OPEN_SIZE;
|
|
|
- }
|
|
|
- if (chan->ops[t] & OP_EXPUNGE) {
|
|
|
- opts[t] |= OPEN_EXPUNGE;
|
|
|
- if (chan->stores[t]->trash) {
|
|
|
- if (!chan->stores[t]->trash_only_new)
|
|
|
- opts[t] |= OPEN_OLD;
|
|
|
- opts[t] |= OPEN_NEW|OPEN_FLAGS;
|
|
|
- } else if (chan->stores[1-t]->trash && chan->stores[1-t]->trash_remote_new)
|
|
|
- opts[t] |= OPEN_NEW|OPEN_FLAGS;
|
|
|
- }
|
|
|
- if (chan->ops[t] & OP_CREATE)
|
|
|
- opts[t] |= OPEN_CREATE;
|
|
|
- }
|
|
|
- if ((chan->ops[S] & (OP_NEW|OP_RENEW)) && chan->max_messages)
|
|
|
- opts[S] |= OPEN_OLD|OPEN_NEW|OPEN_FLAGS;
|
|
|
-
|
|
|
for (t = 0; t < 2; t++) {
|
|
|
ctx[t]->name =
|
|
|
(!names[t] || (ctx[t]->conf->map_inbox && !strcmp( ctx[t]->conf->map_inbox, names[t] ))) ?
|
|
@@ -237,7 +203,6 @@ sync_boxes( store_t *ctx[], const char *names[], channel_conf_t *chan )
|
|
|
ctx[t]->uidvalidity = 0;
|
|
|
driver[t] = ctx[t]->conf->driver;
|
|
|
driver[t]->prepare_paths( ctx[t] );
|
|
|
- driver[t]->prepare_opts( ctx[t], opts[t] );
|
|
|
}
|
|
|
|
|
|
if (!strcmp( chan->sync_state ? chan->sync_state : global_sync_state, "*" )) {
|
|
@@ -440,6 +405,42 @@ sync_boxes( store_t *ctx[], const char *names[], channel_conf_t *chan )
|
|
|
}
|
|
|
skiprd:
|
|
|
|
|
|
+ opts[M] = opts[S] = 0;
|
|
|
+ for (t = 0; t < 2; t++) {
|
|
|
+ if (chan->ops[t] & (OP_DELETE|OP_FLAGS)) {
|
|
|
+ opts[t] |= OPEN_SETFLAGS;
|
|
|
+ opts[1-t] |= OPEN_OLD;
|
|
|
+ if (chan->ops[t] & OP_FLAGS)
|
|
|
+ opts[1-t] |= OPEN_FLAGS;
|
|
|
+ }
|
|
|
+ if (chan->ops[t] & (OP_NEW|OP_RENEW)) {
|
|
|
+ opts[t] |= OPEN_APPEND;
|
|
|
+ if (chan->ops[t] & OP_RENEW)
|
|
|
+ opts[1-t] |= OPEN_OLD;
|
|
|
+ if (chan->ops[t] & OP_NEW)
|
|
|
+ opts[1-t] |= OPEN_NEW;
|
|
|
+ if (chan->ops[t] & OP_EXPUNGE)
|
|
|
+ opts[1-t] |= OPEN_FLAGS;
|
|
|
+ if (chan->stores[t]->max_size)
|
|
|
+ opts[1-t] |= OPEN_SIZE;
|
|
|
+ }
|
|
|
+ if (chan->ops[t] & OP_EXPUNGE) {
|
|
|
+ opts[t] |= OPEN_EXPUNGE;
|
|
|
+ if (chan->stores[t]->trash) {
|
|
|
+ if (!chan->stores[t]->trash_only_new)
|
|
|
+ opts[t] |= OPEN_OLD;
|
|
|
+ opts[t] |= OPEN_NEW|OPEN_FLAGS;
|
|
|
+ } else if (chan->stores[1-t]->trash && chan->stores[1-t]->trash_remote_new)
|
|
|
+ opts[t] |= OPEN_NEW|OPEN_FLAGS;
|
|
|
+ }
|
|
|
+ if (chan->ops[t] & OP_CREATE)
|
|
|
+ opts[t] |= OPEN_CREATE;
|
|
|
+ }
|
|
|
+ if ((chan->ops[S] & (OP_NEW|OP_RENEW)) && chan->max_messages)
|
|
|
+ opts[S] |= OPEN_OLD|OPEN_NEW|OPEN_FLAGS;
|
|
|
+ driver[M]->prepare_opts( ctx[M], opts[M] );
|
|
|
+ driver[S]->prepare_opts( ctx[S], opts[S] );
|
|
|
+
|
|
|
if (ctx[S]->opts & OPEN_NEW)
|
|
|
maxwuid = INT_MAX;
|
|
|
else if (ctx[S]->opts & OPEN_OLD) {
|