Mercurial > dovecot > core-2.2
annotate src/doveadm/dsync/dsync-mailbox.h @ 23017:c1d36f2575c7 default tip
lib-imap: Fix "Don't accept strings with NULs" cherry-pick
author | Timo Sirainen <timo.sirainen@open-xchange.com> |
---|---|
date | Thu, 29 Aug 2019 09:55:25 +0300 |
parents | 20415dd0b85a |
children |
rev | line source |
---|---|
14584 | 1 #ifndef DSYNC_MAILBOX_H |
2 #define DSYNC_MAILBOX_H | |
3 | |
4 #include "mail-storage.h" | |
5 | |
22715
20415dd0b85a
dsync: Add per-mailbox sync lock that is always used.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22494
diff
changeset
|
6 struct dsync_brain; |
20415dd0b85a
dsync: Add per-mailbox sync lock that is always used.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22494
diff
changeset
|
7 |
14584 | 8 /* Mailbox that is going to be synced. Its name was already sent in the |
9 mailbox tree. */ | |
10 struct dsync_mailbox { | |
11 guid_128_t mailbox_guid; | |
12 bool mailbox_lost; | |
22494
1f8b784712e1
dsync: Ignore missing remote mailbox when doing unidirectional sync
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
16977
diff
changeset
|
13 bool mailbox_ignore; |
16977
8a7ecddca4ad
dsync: Support syncing storages with 128bit GUIDs <-> string GUIDs.
Timo Sirainen <tss@iki.fi>
parents:
16376
diff
changeset
|
14 bool have_guids, have_save_guids, have_only_guid128; |
14584 | 15 |
16 uint32_t uid_validity, uid_next, messages_count, first_recent_uid; | |
15496
5d90e2aa1ba8
dsync: Use private modseqs to support syncing private flags in shared mailboxes.
Timo Sirainen <tss@iki.fi>
parents:
14584
diff
changeset
|
17 uint64_t highest_modseq, highest_pvt_modseq; |
14584 | 18 ARRAY_TYPE(mailbox_cache_field) cache_fields; |
19 }; | |
20 | |
16025
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
21 struct dsync_mailbox_attribute { |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
22 enum mail_attribute_type type; |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
23 const char *key; |
16052
0e5a359b7b7f
lib-storage: Mailbox attributes can now be accessed via istreams.
Timo Sirainen <tss@iki.fi>
parents:
16025
diff
changeset
|
24 /* if both values are NULL = not looked up yet / deleted */ |
0e5a359b7b7f
lib-storage: Mailbox attributes can now be accessed via istreams.
Timo Sirainen <tss@iki.fi>
parents:
16025
diff
changeset
|
25 const char *value; |
0e5a359b7b7f
lib-storage: Mailbox attributes can now be accessed via istreams.
Timo Sirainen <tss@iki.fi>
parents:
16025
diff
changeset
|
26 struct istream *value_stream; |
16025
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
27 |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
28 time_t last_change; /* 0 = unknown */ |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
29 uint64_t modseq; /* 0 = unknown */ |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
30 |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
31 bool deleted; /* attribute is known to have been deleted */ |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
32 bool exported; /* internally used by exporting */ |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
33 }; |
16052
0e5a359b7b7f
lib-storage: Mailbox attributes can now be accessed via istreams.
Timo Sirainen <tss@iki.fi>
parents:
16025
diff
changeset
|
34 #define DSYNC_ATTR_HAS_VALUE(attr) \ |
0e5a359b7b7f
lib-storage: Mailbox attributes can now be accessed via istreams.
Timo Sirainen <tss@iki.fi>
parents:
16025
diff
changeset
|
35 ((attr)->value != NULL || (attr)->value_stream != NULL) |
16025
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
36 |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
37 void dsync_mailbox_attribute_dup(pool_t pool, |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
38 const struct dsync_mailbox_attribute *src, |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
39 struct dsync_mailbox_attribute *dest_r); |
c6082de4bf5b
dsync: Added support for syncing mailbox attributes.
Timo Sirainen <tss@iki.fi>
parents:
15750
diff
changeset
|
40 |
22715
20415dd0b85a
dsync: Add per-mailbox sync lock that is always used.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22494
diff
changeset
|
41 int dsync_mailbox_lock(struct dsync_brain *brain, struct mailbox *box, |
20415dd0b85a
dsync: Add per-mailbox sync lock that is always used.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22494
diff
changeset
|
42 struct file_lock **lock_r); |
20415dd0b85a
dsync: Add per-mailbox sync lock that is always used.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
22494
diff
changeset
|
43 |
14584 | 44 #endif |