event_add_str(event, "passdb_driver", passdb_driver);
settings_event_add_filter_name(event,
t_strconcat("passdb_", passdb_driver, NULL));
+ settings_event_add_list_filter_name(event, "passdb",
+ request->passdb->name);
event_set_log_prefix_callback(event, FALSE,
auth_request_get_log_prefix_db, request);
event_add_str(event, "userdb_driver", userdb_driver);
settings_event_add_filter_name(event,
t_strconcat("userdb_", userdb_driver, NULL));
+ settings_event_add_list_filter_name(event, "userdb",
+ request->userdb->name);
event_set_log_prefix_callback(event, FALSE,
auth_request_get_log_prefix_db, request);
event_add_str(event, "passdb", _set->name);
settings_event_add_filter_name(event,
t_strconcat("passdb_", _set->driver, NULL));
+ settings_event_add_list_filter_name(event, "passdb", _set->name);
set = settings_get_or_fatal(event, &auth_passdb_setting_parser_info);
auth_passdb = p_new(auth->pool, struct auth_passdb, 1);
event_add_str(event, "userdb", _set->name);
settings_event_add_filter_name(event,
t_strconcat("userdb_", _set->driver, NULL));
+ settings_event_add_list_filter_name(event, "userdb", _set->name);
if (_set == &userdb_dummy_set) {
/* If this is the dummy set do not try to lookup settings. */
set = _set;
array_foreach_elem(&maps_set->maps, name) {
struct event *map_event = event_create(event);
event_add_str(map_event, "dict_map", name);
+ settings_event_add_list_filter_name(map_event,
+ "dict_map", name);
if (dict_sql_map_settings_get(map_event, set, &error) < 0) {
*error_r = t_strdup_printf(
"Failed to get dict_map %s: %s", name, error);
/* Get settings for the first dict list filter */
event = event_create(event);
event_add_str(event, "dict", dict_name);
+ settings_event_add_list_filter_name(event, "dict", dict_name);
if (settings_get(event, &dict_setting_parser_info, 0,
&dict_set, error_r) < 0) {
event_unref(&event);
#include "array.h"
#include "llist.h"
#include "ioloop.h"
+#include "settings.h"
#include "sql-api-private.h"
#include <time.h>
struct event *event = event_create(db->api.event);
event_set_ptr(event, SQLPOOL_EVENT_PTR, "yes");
event_add_str(event, db->filter_name, host->hostname);
+ settings_event_add_list_filter_name(event, db->filter_name, host->hostname);
ret = db->driver->v.init(event, &conndb, &error);
event_unref(&event);
if (ret < 0)
struct event *set_event = event_create(user->event);
event_add_str(set_event, SETTINGS_EVENT_NAMESPACE_NAME, ns->set->name);
event_set_ptr(set_event, SETTINGS_EVENT_VAR_EXPAND_PARAMS, params);
+ settings_event_add_list_filter_name(set_event,
+ SETTINGS_EVENT_NAMESPACE_NAME, ns->set->name);
/* Expanding mail_path may verify whether the user exists by
trying to access %{owner_home}. This sets
struct event *set_event = event_create(user->event);
event_add_str(set_event, SETTINGS_EVENT_NAMESPACE_NAME, ns_names[i]);
+ settings_event_add_list_filter_name(set_event,
+ SETTINGS_EVENT_NAMESPACE_NAME, ns_names[i]);
if (mail_namespaces_init_add(user, set_event, ns_set,
ns_p, error_r) < 0) {
session_id_suffix);
event_add_str(user->event, "session", mail_user->session_id);
event_add_str(user->event, "service", service_name);
+ settings_event_add_list_filter_name(user->event, "service",
+ service_name);
mail_user->userdb_fields = user->input.userdb_fields == NULL ? NULL :
p_strarray_dup(mail_user->pool, user->input.userdb_fields);
array_count(&ns->mailboxes));
event = event_create(event);
event_add_str(event, SETTINGS_EVENT_NAMESPACE_NAME, ns->name);
+ settings_event_add_list_filter_name(event,
+ SETTINGS_EVENT_NAMESPACE_NAME, ns->name);
array_foreach_elem(&ns->mailboxes, box_name) {
if (settings_get_filter(event,
SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX,
/* Set namespace, but don't overwrite if it already is set.
Shared storage uses the same shared namespace here also for the
user's root prefix="" namespace. */
- if (event_find_field_recursive(set_event, SETTINGS_EVENT_NAMESPACE_NAME) == NULL)
+ if (event_find_field_recursive(set_event, SETTINGS_EVENT_NAMESPACE_NAME) == NULL) {
event_add_str(set_event, SETTINGS_EVENT_NAMESPACE_NAME, ns->set->name);
+ settings_event_add_list_filter_name(set_event,
+ SETTINGS_EVENT_NAMESPACE_NAME, ns->set->name);
+ }
if ((flags & MAIL_STORAGE_FLAG_SHARED_DYNAMIC) != 0) {
mail_storage_create_ns_instance(ns, set_event);
support multiple storages. */
struct event *event = event_create(parent_set_event);
event_add_str(event, SETTINGS_EVENT_NAMESPACE_NAME, ns->set->name);
+ settings_event_add_list_filter_name(event,
+ SETTINGS_EVENT_NAMESPACE_NAME, ns->set->name);
int ret = mailbox_list_create(event, ns, mail_set, list_flags,
&list, error_r);
if (ret < 0) {
event_add_str(event, SETTINGS_EVENT_MAILBOX_NAME_WITHOUT_PREFIX,
mailbox_get_name_without_prefix(list->ns, vname));
event_add_str(event, SETTINGS_EVENT_NAMESPACE_NAME, list->ns->set->name);
+ settings_event_add_list_filter_name(event,
+ SETTINGS_EVENT_NAMESPACE_NAME, list->ns->set->name);
event_drop_parent_log_prefixes(event, 1);
event_set_append_log_prefix(event, t_strdup_printf(
event_add_int(client->event, "remote_port", conn->remote_port);
event_add_str(client->event, "protocol", login_binary->protocol);
event_add_str(client->event, "service", master_service_get_name(master_service));
+ settings_event_add_list_filter_name(client->event, "service",
+ master_service_get_name(master_service));
/* Get settings before using log callback */
event_set_ptr(client->event, SETTINGS_EVENT_VAR_EXPAND_CALLBACK,
static bool
master_service_get_file_listeners(struct service_settings *service_set,
pool_t pool, struct event *event,
- const char *set_name,
+ const char *set_name, const char *service_name,
const struct setting_parser_info *info,
const ARRAY_TYPE(const_string) *listener_names,
ARRAY_TYPE(file_listener_settings) *parsed_listeners,
event = event_create(event);
event_add_str(event, "service", service_set->name);
+ settings_event_add_list_filter_name(event, "service", service_name);
p_array_init(parsed_listeners, pool, array_count(listener_names));
array_foreach_elem(listener_names, name) {
static bool
master_service_get_inet_listeners(struct service_settings *service_set,
+ const char *service_name,
pool_t pool, struct event *event,
const char **error_r)
{
event = event_create(event);
event_add_str(event, "service", service_set->name);
+ settings_event_add_list_filter_name(event, "service", service_name);
p_array_init(&service_set->parsed_inet_listeners, pool,
array_count(&service_set->inet_listeners));
}
event_add_str(event, "inet_listener", name);
- if (settings_get(event, &master_setting_parser_info,
+ struct event *event2 = event_create(event);
+ settings_event_add_list_filter_name(event2, "inet_listener",
+ name);
+ if (settings_get(event2, &master_setting_parser_info,
SETTINGS_GET_FLAG_NO_CHECK,
&master_set, &error) < 0) {
*error_r = t_strdup_printf(
name, error);
ret = FALSE;
settings_free(listener_set);
+ event_unref(&event2);
break;
}
+ event_unref(&event2);
struct inet_listener_settings *listener_set_dup =
p_memdup(pool, listener_set, sizeof(*listener_set));
settings_free(service_set);
if (!master_service_get_file_listeners(
- service_set_dup, pool, event, "unix_listener",
+ service_set_dup, pool, event,
+ "unix_listener", service_name,
&unix_listener_setting_parser_info,
&service_set_dup->unix_listeners,
&service_set_dup->parsed_unix_listeners,
error_r))
return FALSE;
if (!master_service_get_file_listeners(
- service_set_dup, pool, event, "fifo_listener",
+ service_set_dup, pool, event,
+ "fifo_listener", service_name,
&fifo_listener_setting_parser_info,
&service_set_dup->fifo_listeners,
&service_set_dup->parsed_fifo_listeners,
error_r))
return FALSE;
- if (!master_service_get_inet_listeners(service_set_dup, pool,
+ if (!master_service_get_inet_listeners(service_set_dup,
+ service_name, pool,
event, error_r))
return FALSE;
}
/* Get settings for the first fts list filter */
struct event *event = event_create(ns->list->event);
event_add_str(event, "fts", fts_name_first);
+ settings_event_add_list_filter_name(event, "fts", fts_name_first);
settings_free(set);
if (settings_get(event, &fts_setting_parser_info, 0,
&set, &error) < 0) {
else {
event = event_create(set_event);
event_add_str(event, "quota", root->set->quota_name);
+ settings_event_add_list_filter_name(event, "quota",
+ root->set->quota_name);
}
int ret = settings_get(event, "a_root_setting_parser_info, 0,
set_r, error_r);
t_strdup_printf("quota-%s: ", root->backend.name));
event_add_str(root->backend.event, "quota", root_name);
settings_event_add_filter_name(root->backend.event, backend_filter);
+ settings_event_add_list_filter_name(root->backend.event, "quota",
+ root_name);
event_drop_parent_log_prefixes(root->backend.event, 1);
/* Lookup settings again with quota_backend filter name */
} else {
struct event *event = event_create(metrics->event);
event_add_str(event, "event_exporter", filter_name);
+ settings_event_add_list_filter_name(event, "event_exporter",
+ filter_name);
ret = stats_exporters_add_set(metrics, event, set, error_r);
event_unref(&event);
}
struct event *group_event = event_create(event);
event_add_str(group_event, "metric_group_by",
group_by_name);
+ settings_event_add_list_filter_name(group_event,
+ "metric_group_by", group_by_name);
struct event *method_event = event_create(group_event);
event_add_str(group_event, "metric_group_by_method",
array_idx_elem(&group_by_set->method, 0));
+ settings_event_add_list_filter_name(method_event,
+ "metric_group_by_method",
+ array_idx_elem(&group_by_set->method, 0));
ret = stats_metrics_get_group_by_method(method_event, set->pool,
group_by, error_r);
event_unref(&method_event);
ARRAY_TYPE(stats_metric_settings_group_by) group_by;
struct event *event = event_create(metrics->event);
event_add_str(event, "metric", filter_name);
+ settings_event_add_list_filter_name(event, "metric",
+ filter_name);
ret = stats_metrics_get_group_by(event, set, &group_by, error_r);
if (ret == 0)
ret = stats_metrics_add_set(metrics, set, &group_by, error_r);