Mercurial > dovecot > core-2.2
annotate src/lib-storage/index/imapc/imapc-settings.c @ 19621:3afca95bb5b5
imapc: Added imapc_cmd_timeout setting to control the command wait timeouts.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 24 Jan 2016 17:41:01 +0200 |
parents | 9658506bb3ab |
children | 8368689f036b |
rev | line source |
---|---|
19552
0f22db71df7a
global: freshen copyright
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19035
diff
changeset
|
1 /* Copyright (c) 2011-2016 Dovecot authors, see the included COPYING file */ |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "lib.h" |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "settings-parser.h" |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 #include "mail-storage-settings.h" |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 #include "imapc-settings.h" |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 #include <stddef.h> |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 #undef DEF |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 #define DEF(type, name) \ |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 { type, #name, offsetof(struct imapc_settings, name), NULL } |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 static bool imapc_settings_check(void *_set, pool_t pool, const char **error_r); |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 static const struct setting_define imapc_setting_defines[] = { |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 DEF(SET_STR, imapc_host), |
19035
aabfe48db1cf
Changed type of internet port values to in_port_t everywhere.
Stephan Bosch <stephan@rename-it.nl>
parents:
18404
diff
changeset
|
18 DEF(SET_IN_PORT, imapc_port), |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 |
12627
e945bf4f1e59
imapc: Default imapc_user to %u.
Timo Sirainen <tss@iki.fi>
parents:
12625
diff
changeset
|
20 DEF(SET_STR_VARS, imapc_user), |
13916
b860d38f6b9e
imapc: Added imapc_master_user setting.
Timo Sirainen <tss@iki.fi>
parents:
13775
diff
changeset
|
21 DEF(SET_STR_VARS, imapc_master_user), |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 DEF(SET_STR, imapc_password), |
18142
fba6355ddb8a
imapc: Added imapc_sasl_mechanisms setting
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
23 DEF(SET_STR, imapc_sasl_mechanisms), |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 DEF(SET_ENUM, imapc_ssl), |
13635
63ac3b1c2950
imapc: Added imapc_ssl_verify setting.
Timo Sirainen <tss@iki.fi>
parents:
13535
diff
changeset
|
26 DEF(SET_BOOL, imapc_ssl_verify), |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 |
14403
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
28 DEF(SET_STR, imapc_features), |
13535
87662d9ceff8
imapc: Added imapc_rawlog_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
12627
diff
changeset
|
29 DEF(SET_STR, imapc_rawlog_dir), |
14495
03f44d61d582
imapc: Added imapc_list_prefix setting to limit what mailboxes are accessed.
Timo Sirainen <tss@iki.fi>
parents:
14457
diff
changeset
|
30 DEF(SET_STR, imapc_list_prefix), |
19621
3afca95bb5b5
imapc: Added imapc_cmd_timeout setting to control the command wait timeouts.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19620
diff
changeset
|
31 DEF(SET_TIME, imapc_cmd_timeout), |
14933
f33e3ac28e1d
imapc: Added imapc_max_idle_time setting to force activity on connection.
Timo Sirainen <tss@iki.fi>
parents:
14495
diff
changeset
|
32 DEF(SET_TIME, imapc_max_idle_time), |
f33e3ac28e1d
imapc: Added imapc_max_idle_time setting to force activity on connection.
Timo Sirainen <tss@iki.fi>
parents:
14495
diff
changeset
|
33 |
18187
df92d09acc63
imapc: Implemented imapc_features=gmail-pop3 that also migrates pop3_deleted_flag.
Timo Sirainen <tss@iki.fi>
parents:
18185
diff
changeset
|
34 DEF(SET_STR, pop3_deleted_flag), |
df92d09acc63
imapc: Implemented imapc_features=gmail-pop3 that also migrates pop3_deleted_flag.
Timo Sirainen <tss@iki.fi>
parents:
18185
diff
changeset
|
35 |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 SETTING_DEFINE_LIST_END |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 }; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
39 static const struct imapc_settings imapc_default_settings = { |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 .imapc_host = "", |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 .imapc_port = 143, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 |
16435
199769f2979f
imapc: Changed imapc_user setting's default to empty.
Timo Sirainen <tss@iki.fi>
parents:
16039
diff
changeset
|
43 .imapc_user = "", |
13916
b860d38f6b9e
imapc: Added imapc_master_user setting.
Timo Sirainen <tss@iki.fi>
parents:
13775
diff
changeset
|
44 .imapc_master_user = "", |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 .imapc_password = "", |
18142
fba6355ddb8a
imapc: Added imapc_sasl_mechanisms setting
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
46 .imapc_sasl_mechanisms = "", |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 .imapc_ssl = "no:imaps:starttls", |
13635
63ac3b1c2950
imapc: Added imapc_ssl_verify setting.
Timo Sirainen <tss@iki.fi>
parents:
13535
diff
changeset
|
49 .imapc_ssl_verify = TRUE, |
13535
87662d9ceff8
imapc: Added imapc_rawlog_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
12627
diff
changeset
|
50 |
14403
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
51 .imapc_features = "", |
13775
e8c6ff480a18
imapc: Pass ssl_crypto_device setting to lib-ssl-iostream.
Timo Sirainen <tss@iki.fi>
parents:
13635
diff
changeset
|
52 .imapc_rawlog_dir = "", |
14495
03f44d61d582
imapc: Added imapc_list_prefix setting to limit what mailboxes are accessed.
Timo Sirainen <tss@iki.fi>
parents:
14457
diff
changeset
|
53 .imapc_list_prefix = "", |
19621
3afca95bb5b5
imapc: Added imapc_cmd_timeout setting to control the command wait timeouts.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19620
diff
changeset
|
54 .imapc_cmd_timeout = 5*60, |
18187
df92d09acc63
imapc: Implemented imapc_features=gmail-pop3 that also migrates pop3_deleted_flag.
Timo Sirainen <tss@iki.fi>
parents:
18185
diff
changeset
|
55 .imapc_max_idle_time = 60*29, |
df92d09acc63
imapc: Implemented imapc_features=gmail-pop3 that also migrates pop3_deleted_flag.
Timo Sirainen <tss@iki.fi>
parents:
18185
diff
changeset
|
56 |
df92d09acc63
imapc: Implemented imapc_features=gmail-pop3 that also migrates pop3_deleted_flag.
Timo Sirainen <tss@iki.fi>
parents:
18185
diff
changeset
|
57 .pop3_deleted_flag = "" |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
58 }; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 static const struct setting_parser_info imapc_setting_parser_info = { |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 .module_name = "imapc", |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 .defines = imapc_setting_defines, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 .defaults = &imapc_default_settings, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
64 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
65 .type_offset = (size_t)-1, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
66 .struct_size = sizeof(struct imapc_settings), |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
67 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
68 .parent_offset = (size_t)-1, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
69 .parent = &mail_user_setting_parser_info, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
70 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
71 .check_func = imapc_settings_check |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
72 }; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
73 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
74 const struct setting_parser_info *imapc_get_setting_parser_info(void) |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
75 { |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
76 return &imapc_setting_parser_info; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
77 } |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
78 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
79 /* <settings checks> */ |
14403
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
80 struct imapc_feature_list { |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
81 const char *name; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
82 enum imapc_features num; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
83 }; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
84 |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
85 static const struct imapc_feature_list imapc_feature_list[] = { |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
86 { "rfc822.size", IMAPC_FEATURE_RFC822_SIZE }, |
14457
16ed300484c9
imapc: Added guid-forced feature to use SHA1(message) as GUID.
Timo Sirainen <tss@iki.fi>
parents:
14403
diff
changeset
|
87 { "guid-forced", IMAPC_FEATURE_GUID_FORCED }, |
16958
00fc1e040603
imapc: Added imapc_feature fetch-header.
Timo Sirainen <tss@iki.fi>
parents:
16435
diff
changeset
|
88 { "fetch-headers", IMAPC_FEATURE_FETCH_HEADERS }, |
18199
111dcc2ca272
imapc: Merged gmail-pop3 and gmail-labels-keyword features into a single gmail-migration feature
Timo Sirainen <tss@iki.fi>
parents:
18187
diff
changeset
|
89 { "gmail-migration", IMAPC_FEATURE_GMAIL_MIGRATION }, |
18215
405959839f48
imapc: Added imapc_features=search support for sending SEARCH commands.
Timo Sirainen <tss@iki.fi>
parents:
18199
diff
changeset
|
90 { "search", IMAPC_FEATURE_SEARCH }, |
18404
1c17f06d5e52
imapc: Added imapc_features=zimbra-workarounds
Timo Sirainen <tss@iki.fi>
parents:
18331
diff
changeset
|
91 { "zimbra-workarounds", IMAPC_FEATURE_ZIMBRA_WORKAROUNDS }, |
19564
4d671a0e6219
imapc: Added imapc_features = no-examine
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19552
diff
changeset
|
92 { "no-examine", IMAPC_FEATURE_NO_EXAMINE }, |
19579
f82dca1e2547
imapc: Added support for PROXYAUTH command by setting imapc_features = proxyauth
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19564
diff
changeset
|
93 { "proxyauth", IMAPC_FEATURE_PROXYAUTH }, |
19620
9658506bb3ab
imapc: Added imapc_features=fetch-msn-workarounds
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19579
diff
changeset
|
94 { "fetch-msn-workarounds", IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS }, |
14403
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
95 { NULL, 0 } |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
96 }; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
97 |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
98 static int |
18331
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
99 imapc_settings_parse_throttle(struct imapc_settings *set, |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
100 const char *throttle_str, const char **error_r) |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
101 { |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
102 const char *const *tmp; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
103 |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
104 tmp = t_strsplit(throttle_str, ":"); |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
105 if (str_array_length(tmp) != 3 || |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
106 str_to_uint(tmp[0], &set->throttle_init_msecs) < 0 || |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
107 str_to_uint(tmp[1], &set->throttle_max_msecs) < 0 || |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
108 str_to_uint(tmp[2], &set->throttle_shrink_min_msecs) < 0) { |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
109 *error_r = "imapc_features: Invalid throttle settings"; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
110 return -1; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
111 } |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
112 return 0; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
113 } |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
114 |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
115 static int |
14403
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
116 imapc_settings_parse_features(struct imapc_settings *set, |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
117 const char **error_r) |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
118 { |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
119 enum imapc_features features = 0; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
120 const struct imapc_feature_list *list; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
121 const char *const *str; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
122 |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
123 str = t_strsplit_spaces(set->imapc_features, " ,"); |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
124 for (; *str != NULL; str++) { |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
125 list = imapc_feature_list; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
126 for (; list->name != NULL; list++) { |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
127 if (strcasecmp(*str, list->name) == 0) { |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
128 features |= list->num; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
129 break; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
130 } |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
131 } |
18331
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
132 if (strncasecmp(*str, "throttle:", 9) == 0) { |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
133 if (imapc_settings_parse_throttle(set, *str + 9, error_r) < 0) |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
134 return -1; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
135 continue; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
136 } |
14403
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
137 if (list->name == NULL) { |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
138 *error_r = t_strdup_printf("imapc_features: " |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
139 "Unknown feature: %s", *str); |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
140 return -1; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
141 } |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
142 } |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
143 set->parsed_features = features; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
144 return 0; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
145 } |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
146 |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
147 static bool imapc_settings_check(void *_set, pool_t pool ATTR_UNUSED, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
148 const char **error_r) |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
149 { |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
150 struct imapc_settings *set = _set; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
151 |
15153
fd863826c892
imapc: Added IMAPC_DEFAULT_MAX_IDLE_TIME macro.
Timo Sirainen <tss@iki.fi>
parents:
14933
diff
changeset
|
152 if (set->imapc_max_idle_time == 0) { |
fd863826c892
imapc: Added IMAPC_DEFAULT_MAX_IDLE_TIME macro.
Timo Sirainen <tss@iki.fi>
parents:
14933
diff
changeset
|
153 *error_r = "imapc_max_idle_time must not be 0"; |
fd863826c892
imapc: Added IMAPC_DEFAULT_MAX_IDLE_TIME macro.
Timo Sirainen <tss@iki.fi>
parents:
14933
diff
changeset
|
154 return FALSE; |
fd863826c892
imapc: Added IMAPC_DEFAULT_MAX_IDLE_TIME macro.
Timo Sirainen <tss@iki.fi>
parents:
14933
diff
changeset
|
155 } |
14403
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
156 if (imapc_settings_parse_features(set, error_r) < 0) |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
157 return FALSE; |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
158 return TRUE; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
159 } |