Mercurial > dovecot > core-2.2
annotate src/imap-urlauth/imap-urlauth-client.h @ 22715:20415dd0b85a
dsync: Add per-mailbox sync lock that is always used.
Both importing and exporting gets the lock before they even sync the
mailbox. The lock is kept until the import/export finishes. This guarantees
that no matter how dsync is run, two dsyncs can't be working on the same
mailbox at the same time.
This lock is in addition to the optional per-user lock enabled by the -l
parameter. If the -l parameter is used, the same lock timeout is used for
the per-mailbox lock. Otherwise 30s timeout is used.
This should help to avoid email duplication when replication is enabled for
public namespaces, and maybe in some other rare situations as well.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 28 Dec 2017 14:10:23 +0200 |
parents | d419aac7ab31 |
children |
rev | line source |
---|---|
15066
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
1 #ifndef IMAP_URLAUTH_CLIENT_H |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
2 #define IMAP_URLAUTH_CLIENT_H |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
3 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
4 struct client; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
5 struct mail_storage; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
6 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
7 enum imap_urlauth_worker_state { |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
8 IMAP_URLAUTH_WORKER_STATE_INACTIVE = 0, |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
9 IMAP_URLAUTH_WORKER_STATE_CONNECTED, |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
10 IMAP_URLAUTH_WORKER_STATE_ACTIVE, |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
11 }; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
12 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
13 struct client { |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
14 struct client *prev, *next; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
15 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
16 int fd_in, fd_out, fd_ctrl; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
17 struct io *ctrl_io; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
18 struct ostream *output, *ctrl_output; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
19 struct istream *ctrl_input; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
20 struct timeout *to_idle; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
21 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
22 char *username; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
23 ARRAY_TYPE(const_string) access_apps; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
24 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
25 /* settings: */ |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
26 const struct imap_urlauth_settings *set; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
27 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
28 enum imap_urlauth_worker_state worker_state; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
29 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
30 unsigned int disconnected:1; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
31 }; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
32 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
33 extern struct client *imap_urlauth_clients; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
34 extern unsigned int imap_urlauth_client_count; |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
35 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
36 int client_create(const char *username, int fd_in, int fd_out, |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
37 const struct imap_urlauth_settings *set, |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
38 struct client **client_r); |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
39 void client_destroy(struct client *client, const char *reason); |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
40 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
41 void client_send_line(struct client *client, const char *fmt, ...) |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
42 ATTR_FORMAT(2, 3); |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
43 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
44 void client_disconnect(struct client *client, const char *reason); |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
45 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
46 void clients_destroy_all(void); |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
47 |
d419aac7ab31
Added support for IMAP URLAUTH and URLAUTH=BINARY extensions
Stephan Bosch <stephan@rename-it.nl>
parents:
diff
changeset
|
48 #endif |