*tab_r = get_var_expand_table(client);
}
-static int client_settings_read(struct client *client, const char **error_r)
+static int client_settings_get(struct client *client, const char **error_r)
{
i_assert(client->set == NULL);
- if (login_settings_read(&client->local_ip, &client->ip,
- client->local_name, error_r) < 0 ||
- master_service_settings_get(client->event,
+ if (master_service_settings_get(client->event,
&login_setting_parser_info,
0, &client->set, error_r) < 0 ||
master_service_settings_get(client->event,
event_set_ptr(client->event, MASTER_SERVICE_VAR_EXPAND_CALLBACK,
client_var_expand_callback);
event_set_ptr(client->event, "client", client);
- if (client_settings_read(client, &error) < 0) {
+ if (client_settings_get(client, &error) < 0) {
e_error(client->event, "%s", error);
event_unref(&client->event);
pool_unref(&client->pool);
client->ssl_set = NULL;
client->ssl_server_set = NULL;
+ /* Add local_name also to event. This is especially important to get
+ local_name { .. } config filters to work when looking up the settings
+ again. */
+ event_add_str(client->event, "local_name", name);
client->local_name = p_strdup(client->pool, name);
- if (client_settings_read(client, error_r) < 0) {
+ if (client_settings_get(client, error_r) < 0) {
client->set = old_set;
client->ssl_set = old_ssl_set;
client->ssl_server_set = old_ssl_server_set;
return TRUE;
}
/* </settings checks> */
-
-int login_settings_read(const struct ip_addr *local_ip,
- const struct ip_addr *remote_ip,
- const char *local_name, const char **error_r)
-{
- struct master_service_settings_input input;
- struct master_service_settings_output output;
-
- i_zero(&input);
- input.service = login_binary->protocol;
- input.local_name = local_name;
- input.disable_check_settings = TRUE;
-
- if (local_ip != NULL)
- input.local_ip = *local_ip;
- if (remote_ip != NULL)
- input.remote_ip = *remote_ip;
-
- return master_service_settings_read(master_service, &input,
- &output, error_r);
-}
login_binary->preinit();
- if (login_settings_read(NULL, NULL, NULL, &error) < 0 ||
+ struct master_service_settings_input input = {
+ .service = login_binary->protocol,
+ .disable_check_settings = TRUE,
+ };
+ struct master_service_settings_output output;
+ if (master_service_settings_read(master_service, &input,
+ &output, &error) < 0 ||
master_service_settings_get(NULL, &login_setting_parser_info,
MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
&global_login_settings, &error) < 0)