Mercurial > dovecot > core-2.2
annotate src/lib-storage/index/imapc/imapc-settings.c @ 18331:1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
This change could be reverted once good settings are found.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 11 Mar 2015 20:02:20 +0200 |
parents | 405959839f48 |
children | 1c17f06d5e52 |
rev | line source |
---|---|
18137 | 1 /* Copyright (c) 2011-2015 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), |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 DEF(SET_UINT, imapc_port), |
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), |
14933
f33e3ac28e1d
imapc: Added imapc_max_idle_time setting to force activity on connection.
Timo Sirainen <tss@iki.fi>
parents:
14495
diff
changeset
|
31 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
|
32 |
18187
df92d09acc63
imapc: Implemented imapc_features=gmail-pop3 that also migrates pop3_deleted_flag.
Timo Sirainen <tss@iki.fi>
parents:
18185
diff
changeset
|
33 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
|
34 |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 SETTING_DEFINE_LIST_END |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 }; |
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 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
|
39 .imapc_host = "", |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 .imapc_port = 143, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 |
16435
199769f2979f
imapc: Changed imapc_user setting's default to empty.
Timo Sirainen <tss@iki.fi>
parents:
16039
diff
changeset
|
42 .imapc_user = "", |
13916
b860d38f6b9e
imapc: Added imapc_master_user setting.
Timo Sirainen <tss@iki.fi>
parents:
13775
diff
changeset
|
43 .imapc_master_user = "", |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 .imapc_password = "", |
18142
fba6355ddb8a
imapc: Added imapc_sasl_mechanisms setting
Timo Sirainen <tss@iki.fi>
parents:
18137
diff
changeset
|
45 .imapc_sasl_mechanisms = "", |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 .imapc_ssl = "no:imaps:starttls", |
13635
63ac3b1c2950
imapc: Added imapc_ssl_verify setting.
Timo Sirainen <tss@iki.fi>
parents:
13535
diff
changeset
|
48 .imapc_ssl_verify = TRUE, |
13535
87662d9ceff8
imapc: Added imapc_rawlog_dir setting.
Timo Sirainen <tss@iki.fi>
parents:
12627
diff
changeset
|
49 |
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
|
50 .imapc_features = "", |
13775
e8c6ff480a18
imapc: Pass ssl_crypto_device setting to lib-ssl-iostream.
Timo Sirainen <tss@iki.fi>
parents:
13635
diff
changeset
|
51 .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
|
52 .imapc_list_prefix = "", |
18187
df92d09acc63
imapc: Implemented imapc_features=gmail-pop3 that also migrates pop3_deleted_flag.
Timo Sirainen <tss@iki.fi>
parents:
18185
diff
changeset
|
53 .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
|
54 |
df92d09acc63
imapc: Implemented imapc_features=gmail-pop3 that also migrates pop3_deleted_flag.
Timo Sirainen <tss@iki.fi>
parents:
18185
diff
changeset
|
55 .pop3_deleted_flag = "" |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 }; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
57 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
58 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
|
59 .module_name = "imapc", |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 .defines = imapc_setting_defines, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 .defaults = &imapc_default_settings, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 .type_offset = (size_t)-1, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
64 .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
|
65 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
66 .parent_offset = (size_t)-1, |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
67 .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
|
68 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
69 .check_func = imapc_settings_check |
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 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
72 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
|
73 { |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
74 return &imapc_setting_parser_info; |
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 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
77 /* <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
|
78 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
|
79 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
|
80 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
|
81 }; |
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 |
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 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
|
84 { "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
|
85 { "guid-forced", IMAPC_FEATURE_GUID_FORCED }, |
16958
00fc1e040603
imapc: Added imapc_feature fetch-header.
Timo Sirainen <tss@iki.fi>
parents:
16435
diff
changeset
|
86 { "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
|
87 { "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
|
88 { "search", IMAPC_FEATURE_SEARCH }, |
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
|
89 { 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
|
90 }; |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
91 |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
92 static int |
18331
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
93 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
|
94 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
|
95 { |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
96 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
|
97 |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
98 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
|
99 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
|
100 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
|
101 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
|
102 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
|
103 *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
|
104 return -1; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
105 } |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
106 return 0; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
107 } |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
108 |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
109 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
|
110 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
|
111 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
|
112 { |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
113 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
|
114 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
|
115 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
|
116 |
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 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
|
118 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
|
119 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
|
120 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
|
121 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
|
122 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
|
123 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
|
124 } |
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 } |
18331
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
126 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
|
127 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
|
128 return -1; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
129 continue; |
1bccf90e54ca
imapc: Added throttling settings to imapc_features=throttle:a:b:c
Timo Sirainen <tss@iki.fi>
parents:
18215
diff
changeset
|
130 } |
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
|
131 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
|
132 *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
|
133 "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
|
134 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
|
135 } |
6a8b78450202
imapc: Added imapc_features=rfc822.size setting to use RFC822.size for physical sizes.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
136 } |
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 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
|
138 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
|
139 } |
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 |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
141 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
|
142 const char **error_r) |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
143 { |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
144 struct imapc_settings *set = _set; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
145 |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
146 if (set->imapc_port == 0 || set->imapc_port > 65535) { |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
147 *error_r = "invalid imapc_port"; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
148 return FALSE; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
149 } |
15153
fd863826c892
imapc: Added IMAPC_DEFAULT_MAX_IDLE_TIME macro.
Timo Sirainen <tss@iki.fi>
parents:
14933
diff
changeset
|
150 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
|
151 *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
|
152 return FALSE; |
fd863826c892
imapc: Added IMAPC_DEFAULT_MAX_IDLE_TIME macro.
Timo Sirainen <tss@iki.fi>
parents:
14933
diff
changeset
|
153 } |
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
|
154 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
|
155 return FALSE; |
12625
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
156 return TRUE; |
495fb0e9f7cc
imapc: Moved settings from plugin {} section to proper imapc_* settings.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
157 } |