The config is now always kept open.
{
enum master_service_flags service_flags =
MASTER_SERVICE_FLAG_STANDALONE |
- MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN |
MASTER_SERVICE_FLAG_NO_SSL_INIT |
MASTER_SERVICE_FLAG_NO_INIT_DATASTACK_FRAME;
const char *cmd_name;
int main(int argc, char *argv[])
{
enum master_service_flags service_flags =
- MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN |
MASTER_SERVICE_FLAG_HAVE_STARTTLS;
int c;
if (IS_STANDALONE()) {
service_flags |= MASTER_SERVICE_FLAG_STANDALONE |
MASTER_SERVICE_FLAG_STD_CLIENT;
- } else {
- service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN;
}
master_service = master_service_init("imap-urlauth-worker", service_flags,
if (IS_STANDALONE()) {
service_flags |= MASTER_SERVICE_FLAG_STANDALONE |
MASTER_SERVICE_FLAG_STD_CLIENT;
- } else {
- service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN;
}
master_service = master_service_init("imap-urlauth", service_flags,
if (IS_STANDALONE()) {
service_flags |= MASTER_SERVICE_FLAG_STANDALONE |
MASTER_SERVICE_FLAG_STD_CLIENT;
- } else {
- service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN;
}
master_service = master_service_init("imap", service_flags,
int main(int argc, char *argv[])
{
- enum master_service_flags service_flags =
- MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN;
+ enum master_service_flags service_flags = 0;
enum mail_storage_service_flags storage_service_flags =
MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP |
MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP |
*path_r = path = input->config_path != NULL ? input->config_path :
master_service_get_config_path(service);
- if (service->config_fd != -1 && input->config_path == NULL &&
- !service->config_path_changed_with_param) {
- /* use the already opened config socket */
- fd = service->config_fd;
- service->config_fd = -1;
- return fd;
- }
-
if (!service->config_path_from_master &&
!service->config_path_changed_with_param &&
!input->always_exec &&
return 0;
}
-void master_service_config_socket_try_open(struct master_service *service)
-{
- struct master_service_settings_input input;
- const char *path, *error;
- int fd;
-
- /* we'll get here before command line parameters have been parsed,
- so -O, -c and -i parameters haven't been handled yet at this point.
- this means we could end up opening config socket connection
- unnecessarily, but this isn't a problem. we'll just have to
- ignore it later on. (unfortunately there isn't a master_service_*()
- call where this function would be better called.) */
- if (getenv("DOVECONF_ENV") != NULL ||
- getenv(DOVECOT_CONFIG_FD_ENV) != NULL ||
- (service->flags & MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS) != 0)
- return;
-
- i_zero(&input);
- input.never_exec = TRUE;
- fd = master_service_open_config(service, &input, &path, &error);
- if (fd != -1) {
- service->config_fd = fd;
- fd_close_on_exec(service->config_fd, TRUE);
- }
-}
-
static void
filter_string_parse_protocol(const char *filter_string,
ARRAY_TYPE(const_string) *protocols)
extern const struct setting_parser_info master_service_setting_parser_info;
-/* Try to open the config socket if it's going to be needed later by
- master_service_settings_read*() */
-void master_service_config_socket_try_open(struct master_service *service);
int master_service_settings_read(struct master_service *service,
const struct master_service_settings_input *input,
struct master_service_settings_output *output_r,
master_service_set_client_limit(service, 1);
master_service_set_service_count(service, 1);
}
- if ((flags & MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN) != 0) {
- /* since we're going to keep the config socket open anyway,
- open it now so we can read settings even after privileges
- are dropped. */
- master_service_config_socket_try_open(service);
- }
if ((flags & MASTER_SERVICE_FLAG_DONT_SEND_STATS) == 0) {
/* Initialize stats-client early so it can see all events. */
value = getenv(DOVECOT_STATS_WRITER_SOCKET_PATH);
/* Log to configured log file instead of stderr. By default when
_FLAG_STANDALONE is set, logging is done to stderr. */
MASTER_SERVICE_FLAG_DONT_LOG_TO_STDERR = 0x04,
- /* Service is going to do multiple configuration lookups,
- keep the connection to config service open. Also opens the config
- socket before dropping privileges. */
- MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN = 0x08,
/* Don't read settings, but use whatever is in environment */
MASTER_SERVICE_FLAG_NO_CONFIG_SETTINGS = 0x10,
/* Use MASTER_LOGIN_NOTIFY_FD to track login overflow state */
if (IS_STANDALONE()) {
service_flags |= MASTER_SERVICE_FLAG_STANDALONE |
MASTER_SERVICE_FLAG_STD_CLIENT;
- } else {
- service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN ;
}
master_service = master_service_init("lmtp", service_flags,
int argc, char *argv[])
{
enum master_service_flags service_flags =
- MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN |
MASTER_SERVICE_FLAG_TRACK_LOGIN_STATE |
MASTER_SERVICE_FLAG_HAVE_STARTTLS |
MASTER_SERVICE_FLAG_NO_SSL_INIT;
int main(int argc, char *argv[])
{
- enum master_service_flags service_flags =
- MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN;
+ enum master_service_flags service_flags = 0;
int c;
protocol = QUOTA_PROTOCOL_UNKNOWN;
if (IS_STANDALONE()) {
service_flags |= MASTER_SERVICE_FLAG_STANDALONE |
MASTER_SERVICE_FLAG_STD_CLIENT;
- } else {
- service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN;
}
/*
if (IS_STANDALONE()) {
service_flags |= MASTER_SERVICE_FLAG_STANDALONE |
MASTER_SERVICE_FLAG_STD_CLIENT;
- } else {
- service_flags |= MASTER_SERVICE_FLAG_KEEP_CONFIG_OPEN;
}
master_service = master_service_init("submission", service_flags,