dovecot-2.2: lib-storage: If settings can't be read because of p...
dovecot at dovecot.org
dovecot at dovecot.org
Thu Aug 1 14:18:29 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/2bccde4027ea
changeset: 16630:2bccde4027ea
user: Timo Sirainen <tss at iki.fi>
date: Thu Aug 01 14:18:24 2013 +0300
description:
lib-storage: If settings can't be read because of permission denied, restart process.
diffstat:
src/lib-storage/mail-storage-service.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diffs (41 lines):
diff -r 5696b0162527 -r 2bccde4027ea src/lib-storage/mail-storage-service.c
--- a/src/lib-storage/mail-storage-service.c Thu Aug 01 14:18:00 2013 +0300
+++ b/src/lib-storage/mail-storage-service.c Thu Aug 01 14:18:24 2013 +0300
@@ -65,6 +65,7 @@
unsigned int debug:1;
unsigned int log_initialized:1;
+ unsigned int config_permission_denied:1;
};
struct mail_storage_service_user {
@@ -831,6 +832,8 @@
enum mail_storage_service_flags flags;
unsigned int i;
+ ctx->config_permission_denied = FALSE;
+
flags = input == NULL ? ctx->flags :
mail_storage_service_input_get_flags(ctx, input);
@@ -879,6 +882,8 @@
&set_output, error_r) < 0) {
*error_r = t_strdup_printf(
"Error reading configuration: %s", *error_r);
+ ctx->config_permission_denied =
+ set_output.permission_denied;
return -1;
}
*parser_r = ctx->service->set_parser;
@@ -988,6 +993,11 @@
if (mail_storage_service_read_settings(ctx, input, user_pool,
&user_info, &set_parser,
&error) < 0) {
+ if (ctx->config_permission_denied) {
+ /* just restart and maybe next time we will open the
+ config socket before dropping privileges */
+ i_fatal("user %s: %s", username, error);
+ }
i_error("user %s: %s", username, error);
pool_unref(&user_pool);
*error_r = MAIL_ERRSTR_CRITICAL_MSG;
More information about the dovecot-cvs
mailing list