diff --git a/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c b/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c index 25f16495d3467414c7983acbfbb412d56fda0e8a..48e244b71000417d81eaa14c0b5fba6666677ef6 100644 --- a/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c +++ b/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c @@ -28,7 +28,7 @@ #define EXT_DUPLICATE_DEFAULT_PERIOD (12*60*60) #define EXT_DUPLICATE_DEFAULT_MAX_PERIOD (2*24*60*60) -bool ext_duplicate_load(const struct sieve_extension *ext, void **context) +int ext_duplicate_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; struct ext_duplicate_context *extctx; @@ -52,7 +52,7 @@ bool ext_duplicate_load(const struct sieve_extension *ext, void **context) extctx->max_period = max_period; *context = extctx; - return TRUE; + return 0; } void ext_duplicate_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/duplicate/ext-duplicate-common.h b/src/lib-sieve/plugins/duplicate/ext-duplicate-common.h index 193d47b491933544c44b5d54a45ae444add8551e..a5181f2c89548629eafbc46e56ebc3903709d258 100644 --- a/src/lib-sieve/plugins/duplicate/ext-duplicate-common.h +++ b/src/lib-sieve/plugins/duplicate/ext-duplicate-common.h @@ -12,7 +12,7 @@ struct ext_duplicate_context { unsigned int max_period; }; -bool ext_duplicate_load(const struct sieve_extension *ext, void **context); +int ext_duplicate_load(const struct sieve_extension *ext, void **context); void ext_duplicate_unload(const struct sieve_extension *ext); extern const struct sieve_extension_def duplicate_extension; diff --git a/src/lib-sieve/plugins/editheader/ext-editheader-common.c b/src/lib-sieve/plugins/editheader/ext-editheader-common.c index d86712a6f18c698d788ad186f68c55230ddc915a..a28d25d190922f39fab98b0ef7c689f6dc6f97e8 100644 --- a/src/lib-sieve/plugins/editheader/ext-editheader-common.c +++ b/src/lib-sieve/plugins/editheader/ext-editheader-common.c @@ -93,7 +93,7 @@ ext_editheader_config_headers(struct sieve_instance *svinst, } } -bool ext_editheader_load(const struct sieve_extension *ext, void **context) +int ext_editheader_load(const struct sieve_extension *ext, void **context) { struct ext_editheader_context *extctx; struct sieve_instance *svinst = ext->svinst; @@ -140,7 +140,7 @@ bool ext_editheader_load(const struct sieve_extension *ext, void **context) } T_END; *context = extctx; - return TRUE; + return 0; } void ext_editheader_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/editheader/ext-editheader-common.h b/src/lib-sieve/plugins/editheader/ext-editheader-common.h index 8a6cc362f56416c28e9346001497be037114ffec..161d03998d2197595b2ac1283d35882004d2d50c 100644 --- a/src/lib-sieve/plugins/editheader/ext-editheader-common.h +++ b/src/lib-sieve/plugins/editheader/ext-editheader-common.h @@ -26,7 +26,7 @@ extern const struct sieve_operation_def deleteheader_operation; extern const struct sieve_extension_def editheader_extension; -bool ext_editheader_load(const struct sieve_extension *ext, void **context); +int ext_editheader_load(const struct sieve_extension *ext, void **context); void ext_editheader_unload(const struct sieve_extension *ext); /* diff --git a/src/lib-sieve/plugins/enotify/ext-enotify.c b/src/lib-sieve/plugins/enotify/ext-enotify.c index 47f95d2fbacc27a9bd87c401930a92d98c5014ad..c2fa3c5d5bd583a5501d53b8c3b5da3461eb8d13 100644 --- a/src/lib-sieve/plugins/enotify/ext-enotify.c +++ b/src/lib-sieve/plugins/enotify/ext-enotify.c @@ -40,7 +40,7 @@ const struct sieve_operation_def *ext_enotify_operations[] = { * Extension */ -static bool ext_enotify_load(const struct sieve_extension *ext, void **context); +static int ext_enotify_load(const struct sieve_extension *ext, void **context); static void ext_enotify_unload(const struct sieve_extension *ext); static bool ext_enotify_validator_load(const struct sieve_extension *ext, @@ -55,7 +55,7 @@ const struct sieve_extension_def enotify_extension = { SIEVE_EXT_DEFINE_OPERAND(encodeurl_operand), }; -static bool ext_enotify_load(const struct sieve_extension *ext, void **context) +static int ext_enotify_load(const struct sieve_extension *ext, void **context) { const struct sieve_extension *var_ext; struct ext_enotify_context *extctx; @@ -66,7 +66,7 @@ static bool ext_enotify_load(const struct sieve_extension *ext, void **context) } if (sieve_ext_variables_get_extension(ext->svinst, &var_ext) < 0) - return FALSE; + return -1; extctx = i_new(struct ext_enotify_context, 1); extctx->var_ext = var_ext; @@ -75,7 +75,7 @@ static bool ext_enotify_load(const struct sieve_extension *ext, void **context) ext_enotify_methods_init(ext->svinst, extctx); sieve_extension_capabilities_register(ext, ¬ify_capabilities); - return TRUE; + return 0; } static void ext_enotify_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/imap4flags/ext-imap4flags.c b/src/lib-sieve/plugins/imap4flags/ext-imap4flags.c index 4582943a6681c71fdb9f030c608fa8a7504cc884..c4cea7fccf8c2e58bff0b8ac45ac5432b7efd5d1 100644 --- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags.c +++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags.c @@ -42,7 +42,7 @@ const struct sieve_operation_def *imap4flags_operations[] = { * Extension */ -static bool +static int ext_imap4flags_load(const struct sieve_extension *ext, void **context); static void ext_imap4flags_unload(const struct sieve_extension *ext); @@ -63,7 +63,7 @@ const struct sieve_extension_def imap4flags_extension = { SIEVE_EXT_DEFINE_OPERAND(flags_side_effect_operand) }; -static bool +static int ext_imap4flags_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; @@ -76,13 +76,13 @@ ext_imap4flags_load(const struct sieve_extension *ext, void **context) } if (sieve_ext_variables_get_extension(svinst, &var_ext) < 0) - return FALSE; + return -1; extctx = i_new(struct ext_imap4flags_context, 1); extctx->var_ext = var_ext; *context = extctx; - return TRUE; + return 0; } static void ext_imap4flags_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/include/ext-include-common.c b/src/lib-sieve/plugins/include/ext-include-common.c index db20e26812e3d9c42080a8926a80ea7519ee4cc4..eb271d09ad34ed3210c42384843d5368405b4acf 100644 --- a/src/lib-sieve/plugins/include/ext-include-common.c +++ b/src/lib-sieve/plugins/include/ext-include-common.c @@ -73,7 +73,7 @@ struct ext_include_interpreter_context { /* Extension hooks */ -bool ext_include_load(const struct sieve_extension *ext, void **context) +int ext_include_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; const struct sieve_extension *var_ext; @@ -88,7 +88,7 @@ bool ext_include_load(const struct sieve_extension *ext, void **context) /* Extension dependencies */ if (sieve_ext_variables_get_extension(ext->svinst, &var_ext) < 0) - return FALSE; + return -1; extctx = i_new(struct ext_include_context, 1); extctx->var_ext = var_ext; @@ -116,7 +116,7 @@ bool ext_include_load(const struct sieve_extension *ext, void **context) extctx->max_includes = (unsigned int)uint_setting; *context = extctx; - return TRUE; + return 0; } void ext_include_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/include/ext-include-common.h b/src/lib-sieve/plugins/include/ext-include-common.h index bc806b3187f99c2f899abd85d34a4a9605b17b53..cc98b7763ce0a916e6a6832c3f1ef5fe06cf8f4b 100644 --- a/src/lib-sieve/plugins/include/ext-include-common.h +++ b/src/lib-sieve/plugins/include/ext-include-common.h @@ -53,7 +53,7 @@ ext_include_script_location_name(enum ext_include_script_location location) extern const struct sieve_extension_def include_extension; extern const struct sieve_binary_extension include_binary_ext; -bool ext_include_load(const struct sieve_extension *ext, void **context); +int ext_include_load(const struct sieve_extension *ext, void **context); void ext_include_unload(const struct sieve_extension *ext); /* diff --git a/src/lib-sieve/plugins/mime/ext-extracttext.c b/src/lib-sieve/plugins/mime/ext-extracttext.c index 1c059c9ee6d56de4f347a1cb6fbbb70aedd4549b..c2c3e218ffd1010db1d01c7e51858226dbbe2d3f 100644 --- a/src/lib-sieve/plugins/mime/ext-extracttext.c +++ b/src/lib-sieve/plugins/mime/ext-extracttext.c @@ -30,7 +30,7 @@ * Extension */ -static bool +static int ext_extracttext_load(const struct sieve_extension *ext, void **context); static void ext_extracttext_unload(const struct sieve_extension *ext); @@ -46,7 +46,7 @@ const struct sieve_extension_def extracttext_extension = { SIEVE_EXT_DEFINE_OPERATION(extracttext_operation), }; -static bool +static int ext_extracttext_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; @@ -60,17 +60,17 @@ ext_extracttext_load(const struct sieve_extension *ext, void **context) } if (sieve_ext_variables_get_extension(ext->svinst, &var_ext) < 0) - return FALSE; + return -1; if (sieve_extension_register(svinst, &foreverypart_extension, FALSE, &fep_ext) < 0) - return FALSE; + return -1; extctx = i_new(struct ext_extracttext_context, 1); extctx->var_ext = var_ext; extctx->fep_ext = fep_ext; *context = extctx; - return TRUE; + return 0; } static void ext_extracttext_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c index 2d01061753633af958b8c288bd5b932281029bb5..48376fdfe76d1a98f670f91dec034e2f025bbadc 100644 --- a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c +++ b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c @@ -249,7 +249,7 @@ ext_spamvirustest_parse_decimal_value(const char *str_value, * Extension initialization */ -bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) +int ext_spamvirustest_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; struct ext_spamvirustest_context *extctx = *context; @@ -258,8 +258,7 @@ bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) enum ext_spamvirustest_status_type type; const char *error; pool_t pool; - bool result = TRUE; - int reload = 0; + int reload = 0, ret = 0; if (*context != NULL) { reload = extctx->reload + 1; @@ -293,7 +292,7 @@ bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) /* Base configuration */ if (status_header == NULL) - return TRUE; + return 0; if (status_type == NULL || strcmp(status_type, "score") == 0) { type = EXT_SPAMVIRUSTEST_STATUS_TYPE_SCORE; @@ -304,7 +303,7 @@ bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) } else { e_error(svinst->event, "%s: " "invalid status type '%s'", ext_name, status_type); - return FALSE; + return -1; } /* Verify settings */ @@ -316,14 +315,14 @@ bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) "sieve_%s_max_header and sieve_%s_max_value " "cannot both be configured", ext_name, ext_name, ext_name); - return TRUE; + return 0; } if (max_header == NULL && max_value == NULL) { e_error(svinst->event, "%s: " "none of sieve_%s_max_header or sieve_%s_max_value " "is configured", ext_name, ext_name, ext_name); - return TRUE; + return 0; } } else { if (max_header != NULL) { @@ -353,10 +352,10 @@ bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) e_error(svinst->event, "%s: " "invalid status header specification '%s': %s", ext_name, status_header, error); - result = FALSE; + ret = -1; } - if (result) { + if (ret == 0) { if (type != EXT_SPAMVIRUSTEST_STATUS_TYPE_TEXT) { /* Parse max header */ @@ -368,19 +367,19 @@ bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) "invalid max header specification " "'%s': %s", ext_name, max_header, error); - result = FALSE; + ret = -1; } /* Parse max value */ - if (result && max_value != NULL) { + if (ret == 0 && max_value != NULL) { if (!ext_spamvirustest_parse_decimal_value( max_value, &extctx->max_value, &error)) { e_error(svinst->event, "%s: " "invalid max value specification " "'%s': %s", ext_name, max_value, error); - result = FALSE; + ret = -1; } } @@ -407,7 +406,7 @@ bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) } *context = extctx; - if (!result) { + if (ret < 0) { e_warning(svinst->event, "%s: " "extension not configured, " "tests will always match against \"0\"", @@ -416,7 +415,7 @@ bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context) *context = NULL; } - return result; + return ret; } void ext_spamvirustest_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.h b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.h index 61e54a7290df4d5c7fd9c6458e149f681dcf8689..87d4844608f9cc514ca6e6c04e834b137412b72b 100644 --- a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.h +++ b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.h @@ -11,7 +11,7 @@ extern const struct sieve_extension_def spamtest_extension; extern const struct sieve_extension_def spamtestplus_extension; extern const struct sieve_extension_def virustest_extension; -bool ext_spamvirustest_load(const struct sieve_extension *ext, void **context); +int ext_spamvirustest_load(const struct sieve_extension *ext, void **context); void ext_spamvirustest_unload(const struct sieve_extension *ext); /* diff --git a/src/lib-sieve/plugins/subaddress/ext-subaddress.c b/src/lib-sieve/plugins/subaddress/ext-subaddress.c index 9b5cf04a3b4be28d9cf7f98333b79e7e51b9779c..34a54c1f323fb3e6524dd3de5585a7730e59244d 100644 --- a/src/lib-sieve/plugins/subaddress/ext-subaddress.c +++ b/src/lib-sieve/plugins/subaddress/ext-subaddress.c @@ -48,7 +48,7 @@ static struct sieve_operand_def subaddress_operand; * Extension */ -static bool +static int ext_subaddress_load(const struct sieve_extension *ext, void **context); static void ext_subaddress_unload(const struct sieve_extension *ext); static bool @@ -63,7 +63,7 @@ const struct sieve_extension_def subaddress_extension = { SIEVE_EXT_DEFINE_OPERAND(subaddress_operand), }; -static bool +static int ext_subaddress_load(const struct sieve_extension *ext, void **context) { struct ext_subaddress_context *extctx; @@ -83,7 +83,7 @@ ext_subaddress_load(const struct sieve_extension *ext, void **context) extctx->delimiter = i_strdup(delim); *context = extctx; - return TRUE; + return 0; } static void ext_subaddress_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/vacation/ext-vacation-common.c b/src/lib-sieve/plugins/vacation/ext-vacation-common.c index aa78f3c3d4059439e05bd21af124292672bafebd..cb648ec3854142760e1f6a86a259857f740ae4cc 100644 --- a/src/lib-sieve/plugins/vacation/ext-vacation-common.c +++ b/src/lib-sieve/plugins/vacation/ext-vacation-common.c @@ -10,7 +10,7 @@ #include "ext-vacation-common.h" -bool ext_vacation_load(const struct sieve_extension *ext, void **context) +int ext_vacation_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; struct ext_vacation_context *extctx; @@ -83,7 +83,7 @@ bool ext_vacation_load(const struct sieve_extension *ext, void **context) extctx->to_header_ignore_envelope = to_header_ignore_envelope; *context = extctx; - return TRUE; + return 0; } void ext_vacation_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/vacation/ext-vacation-common.h b/src/lib-sieve/plugins/vacation/ext-vacation-common.h index 053551495d74c9186871468a9fb34ef09d2df4c5..3f5d0d8f42f866a6c7be4b816866439ab4cda2fb 100644 --- a/src/lib-sieve/plugins/vacation/ext-vacation-common.h +++ b/src/lib-sieve/plugins/vacation/ext-vacation-common.h @@ -43,7 +43,7 @@ extern const struct sieve_operation_def vacation_operation; extern const struct sieve_extension_def vacation_extension; -bool ext_vacation_load(const struct sieve_extension *ext, void **context); +int ext_vacation_load(const struct sieve_extension *ext, void **context); void ext_vacation_unload(const struct sieve_extension *ext); /* Vacation-seconds */ diff --git a/src/lib-sieve/plugins/vacation/ext-vacation-seconds.c b/src/lib-sieve/plugins/vacation/ext-vacation-seconds.c index 1d52fc44f0b3f63512625b587e22db799ab0e75d..0a8fba525344666be0006192041deb29ceef7905 100644 --- a/src/lib-sieve/plugins/vacation/ext-vacation-seconds.c +++ b/src/lib-sieve/plugins/vacation/ext-vacation-seconds.c @@ -28,7 +28,7 @@ struct ext_vacation_seconds_context { const struct sieve_extension *ext_vacation; }; -static bool +static int ext_vacation_seconds_load(const struct sieve_extension *ext, void **context); static void ext_vacation_seconds_unload(const struct sieve_extension *ext); @@ -43,7 +43,7 @@ const struct sieve_extension_def vacation_seconds_extension = { .validator_load = ext_vacation_seconds_validator_load, }; -static bool +static int ext_vacation_seconds_load(const struct sieve_extension *ext, void **context) { const struct sieve_extension *ext_vac; @@ -57,13 +57,13 @@ ext_vacation_seconds_load(const struct sieve_extension *ext, void **context) /* Make sure vacation extension is registered */ if (sieve_extension_require(ext->svinst, &vacation_extension, TRUE, &ext_vac) < 0) - return FALSE; + return -1; extctx = i_new(struct ext_vacation_seconds_context, 1); extctx->ext_vacation = ext_vac; *context = extctx; - return TRUE; + return 0; } static void ext_vacation_seconds_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/variables/ext-variables-common.c b/src/lib-sieve/plugins/variables/ext-variables-common.c index 20a4d164b77f337a77efd1069e5211d6f1f9865c..5aa411e821d653ef170d003b0290cde3a45d0390 100644 --- a/src/lib-sieve/plugins/variables/ext-variables-common.c +++ b/src/lib-sieve/plugins/variables/ext-variables-common.c @@ -52,7 +52,7 @@ size_t sieve_variables_get_max_variable_size( * Extension configuration */ -bool ext_variables_load(const struct sieve_extension *ext, void **context) +int ext_variables_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; struct ext_variables_context *extctx; @@ -98,7 +98,7 @@ bool ext_variables_load(const struct sieve_extension *ext, void **context) } *context = extctx; - return TRUE; + return 0; } void ext_variables_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/variables/ext-variables-common.h b/src/lib-sieve/plugins/variables/ext-variables-common.h index b1407cd1cabb53446b0a6df8fbf756d1fc8dcca2..f0c1fef429654a38f383ad56545e3bd6ae22c7d4 100644 --- a/src/lib-sieve/plugins/variables/ext-variables-common.h +++ b/src/lib-sieve/plugins/variables/ext-variables-common.h @@ -19,7 +19,7 @@ struct ext_variables_context { extern const struct sieve_extension_def variables_extension; -bool ext_variables_load(const struct sieve_extension *ext, void **context); +int ext_variables_load(const struct sieve_extension *ext, void **context); void ext_variables_unload(const struct sieve_extension *ext); const struct ext_variables_context * diff --git a/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c b/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c index 8be2944d11c8c0bad2b45c342ddbff5a9a2c8961..e3a81e9320055011ed6296615656f7a2af322f32 100644 --- a/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c +++ b/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c @@ -35,7 +35,7 @@ * Extension */ -static bool +static int ext_vnd_environment_load(const struct sieve_extension *ext, void **context); static void ext_vnd_environment_unload(const struct sieve_extension *ext); @@ -56,7 +56,7 @@ const struct sieve_extension_def vnd_environment_extension = { SIEVE_EXT_DEFINE_OPERAND(environment_namespace_operand), }; -static bool +static int ext_vnd_environment_load(const struct sieve_extension *ext, void **context) { const struct sieve_extension *ext_env; @@ -69,16 +69,16 @@ ext_vnd_environment_load(const struct sieve_extension *ext, void **context) } if (sieve_ext_environment_require_extension(ext->svinst, &ext_env) < 0) - return FALSE; + return -1; if (sieve_ext_variables_get_extension(ext->svinst, &ext_var) < 0) - return FALSE; + return -1; extctx = i_new(struct ext_vnd_environment_context, 1); extctx->env_ext = ext_env; extctx->var_ext = ext_var; *context = extctx; - return TRUE; + return 0; } static void ext_vnd_environment_unload(const struct sieve_extension *ext) diff --git a/src/lib-sieve/plugins/vnd.dovecot/report/ext-vnd-report-common.c b/src/lib-sieve/plugins/vnd.dovecot/report/ext-vnd-report-common.c index c9677fbbc1cfe1000a569c13d3d876ee355d1ddd..f2d7668e936fb673cc87e1e7d2f246e285d95681 100644 --- a/src/lib-sieve/plugins/vnd.dovecot/report/ext-vnd-report-common.c +++ b/src/lib-sieve/plugins/vnd.dovecot/report/ext-vnd-report-common.c @@ -10,7 +10,7 @@ #include "ext-vnd-report-common.h" -bool ext_report_load(const struct sieve_extension *ext, void **context) +int ext_report_load(const struct sieve_extension *ext, void **context) { struct sieve_instance *svinst = ext->svinst; struct ext_report_context *extctx; @@ -22,7 +22,7 @@ bool ext_report_load(const struct sieve_extension *ext, void **context) &extctx->report_from); *context = extctx; - return TRUE; + return 0; } const char *ext_vnd_report_parse_feedback_type(const char *feedback_type) diff --git a/src/lib-sieve/plugins/vnd.dovecot/report/ext-vnd-report-common.h b/src/lib-sieve/plugins/vnd.dovecot/report/ext-vnd-report-common.h index aa7e26fb3e6ea5a9a5cf99b1696b5aca0ba16183..09ea4d940fb499998e9bc31b4ca35772ac6d2a1f 100644 --- a/src/lib-sieve/plugins/vnd.dovecot/report/ext-vnd-report-common.h +++ b/src/lib-sieve/plugins/vnd.dovecot/report/ext-vnd-report-common.h @@ -15,7 +15,7 @@ struct ext_report_context { extern const struct sieve_extension_def vnd_report_extension; -bool ext_report_load(const struct sieve_extension *ext, void **context); +int ext_report_load(const struct sieve_extension *ext, void **context); /* * Commands diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c index fbe45cf57bbfe34924d364ab3e467dd430d06d58..ac033ac48c3f3683a1e14df75c0d7d57788daecc 100644 --- a/src/lib-sieve/sieve-extensions.c +++ b/src/lib-sieve/sieve-extensions.c @@ -298,9 +298,16 @@ sieve_extensions_get_preloaded(struct sieve_instance *svinst, static int _sieve_extension_load(struct sieve_extension *ext) { + int ret; + /* Call load handler */ - if (ext->def != NULL && ext->def->load != NULL && - !ext->def->load(ext, &ext->context)) { + if (ext->def == NULL || ext->def->load == NULL) + return 0; + + ret = ext->def->load(ext, &ext->context); + i_assert(ret <= 0); + + if (ret < 0) { e_error(ext->svinst->event, "failed to load '%s' extension support.", ext->def->name); diff --git a/src/lib-sieve/sieve-extensions.h b/src/lib-sieve/sieve-extensions.h index 21cdb473bb4bf0c8113d76d5ef68d04acdfec3d3..fa46859a1d014e6fd30532c3c76c3fc66dfbc53a 100644 --- a/src/lib-sieve/sieve-extensions.h +++ b/src/lib-sieve/sieve-extensions.h @@ -24,7 +24,7 @@ struct sieve_extension_def { unsigned int version; /* Registration */ - bool (*load)(const struct sieve_extension *ext, void **context); + int (*load)(const struct sieve_extension *ext, void **context); void (*unload)(const struct sieve_extension *ext); /* Compilation */ diff --git a/src/plugins/imapsieve/ext-imapsieve.c b/src/plugins/imapsieve/ext-imapsieve.c index 92a3fb7f91597dc326559a0b728a8c099df1c004..a19f5ed4cbb025ebb452ed244143d66a12b90432 100644 --- a/src/plugins/imapsieve/ext-imapsieve.c +++ b/src/plugins/imapsieve/ext-imapsieve.c @@ -28,9 +28,9 @@ * Extension */ -static bool +static int ext_imapsieve_load(const struct sieve_extension *ext, void **context); -static bool +static int ext_vnd_imapsieve_load(const struct sieve_extension *ext, void **context); static void ext_imapsieve_unload(const struct sieve_extension *ext); static void ext_vnd_imapsieve_unload(const struct sieve_extension *ext); @@ -71,7 +71,7 @@ const struct sieve_extension_def vnd_imapsieve_extension = { * Context */ -static bool +static int ext_imapsieve_load(const struct sieve_extension *ext, void **context) { const struct sieve_extension *ext_environment; @@ -84,16 +84,16 @@ ext_imapsieve_load(const struct sieve_extension *ext, void **context) if (sieve_ext_environment_require_extension(ext->svinst, &ext_environment) < 0) - return FALSE; + return -1; extctx = i_new(struct ext_imapsieve_context, 1); extctx->ext_environment = ext_environment; *context = extctx; - return TRUE; + return 0; } -static bool +static int ext_vnd_imapsieve_load(const struct sieve_extension *ext, void **context) { struct ext_vnd_imapsieve_context *extctx; @@ -107,15 +107,15 @@ ext_vnd_imapsieve_load(const struct sieve_extension *ext, void **context) #ifdef __IMAPSIEVE_DUMMY if (sieve_extension_require(ext->svinst, &imapsieve_extension_dummy, TRUE, &extctx->ext_imapsieve) < 0) - return FALSE; + return -1; #else if (sieve_extension_require(ext->svinst, &imapsieve_extension, TRUE, &extctx->ext_imapsieve) < 0) - return FALSE; + return -1; #endif *context = extctx; - return TRUE; + return 0; } static void ext_imapsieve_unload(const struct sieve_extension *ext) diff --git a/src/plugins/sieve-extprograms/sieve-extprograms-common.c b/src/plugins/sieve-extprograms/sieve-extprograms-common.c index 49188ffb8a393941af107f6629081ac0d20dbecb..e64e25f4d38a2023085a9441406347e8dd58dae7 100644 --- a/src/plugins/sieve-extprograms/sieve-extprograms-common.c +++ b/src/plugins/sieve-extprograms/sieve-extprograms-common.c @@ -56,8 +56,8 @@ * Context */ -bool sieve_extprograms_ext_load(const struct sieve_extension *ext, - void **context) +int sieve_extprograms_ext_load(const struct sieve_extension *ext, + void **context) { struct sieve_instance *svinst = ext->svinst; const struct sieve_extension *copy_ext = NULL; @@ -85,12 +85,12 @@ bool sieve_extprograms_ext_load(const struct sieve_extension *ext, if (sieve_extension_is(ext, sieve_ext_vnd_pipe)) { if (sieve_ext_copy_get_extension(ext->svinst, ©_ext) < 0) - return FALSE; + return -1; } if (sieve_extension_is(ext, sieve_ext_vnd_execute)) { if (sieve_ext_variables_get_extension(ext->svinst, &var_ext) < 0) - return FALSE; + return -1; } extctx = i_new(struct sieve_extprograms_ext_context, 1); @@ -120,7 +120,7 @@ bool sieve_extprograms_ext_load(const struct sieve_extension *ext, } *context = extctx; - return TRUE; + return 0; } void sieve_extprograms_ext_unload(const struct sieve_extension *ext) diff --git a/src/plugins/sieve-extprograms/sieve-extprograms-common.h b/src/plugins/sieve-extprograms/sieve-extprograms-common.h index 9bb213906654165abda3acd316f39535a4f8da40..c7f9719f3522d0694fde3cbd4b3749d704c68299 100644 --- a/src/plugins/sieve-extprograms/sieve-extprograms-common.h +++ b/src/plugins/sieve-extprograms/sieve-extprograms-common.h @@ -24,8 +24,8 @@ struct sieve_extprograms_ext_context { unsigned int execute_timeout; }; -bool sieve_extprograms_ext_load(const struct sieve_extension *ext, - void **context); +int sieve_extprograms_ext_load(const struct sieve_extension *ext, + void **context); void sieve_extprograms_ext_unload(const struct sieve_extension *ext); /*