guid_128_t anvil_conn_guid;
struct lmtp_local_recipient *duplicate;
+ const struct lda_settings *lda_set;
bool anvil_connect_sent:1;
};
if (llrcpt->anvil_query != NULL)
anvil_client_query_abort(anvil, &llrcpt->anvil_query);
lmtp_local_rcpt_anvil_disconnect(llrcpt);
+ master_service_settings_free(llrcpt->lda_set);
mail_storage_service_user_unref(&llrcpt->service_user);
}
const char *error)
{
struct smtp_server_recipient *rcpt = llrcpt->rcpt->rcpt;
- struct lda_settings *lda_set =
- mail_storage_service_user_get_set(llrcpt->service_user,
- &lda_setting_parser_info);
- if (lda_set->quota_full_tempfail)
+ if (llrcpt->lda_set->quota_full_tempfail)
smtp_server_recipient_reply(rcpt, 452, "4.2.2", "%s", error);
else
smtp_server_recipient_reply(rcpt, 552, "5.2.2", "%s", error);
lrcpt->type = LMTP_RECIPIENT_TYPE_LOCAL;
lrcpt->backend_context = llrcpt;
+ struct setting_parser_context *set_parser =
+ mail_storage_service_user_get_settings_parser(service_user);
+ if (master_service_settings_parser_get(rcpt->event, set_parser,
+ &lda_setting_parser_info,
+ 0, &llrcpt->lda_set, &error) < 0) {
+ e_error(rcpt->event, "%s", error);
+ smtp_server_recipient_reply(rcpt, 451, "4.3.0",
+ "Temporary internal error");
+ return -1;
+ }
+
smtp_server_recipient_add_hook(
rcpt, SMTP_SERVER_RECIPIENT_HOOK_DESTROY,
lmtp_local_rcpt_destroy, llrcpt);
if (master_service_settings_parser_get(rcpt_user->event,
rcpt_user->set_parser, &smtp_submit_setting_parser_info,
MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
- &lldctx.smtp_set, &error) < 0 ||
- master_service_settings_parser_get(rcpt_user->event,
- rcpt_user->set_parser, &lda_setting_parser_info,
- MASTER_SERVICE_SETTINGS_GET_FLAG_NO_EXPAND,
- &lldctx.lda_set, &error) < 0) {
- master_service_settings_free(lldctx.smtp_set);
+ &lldctx.smtp_set, &error) < 0) {
e_error(rcpt->event, "%s", error);
smtp_server_recipient_reply(rcpt, 451, "4.3.0",
"Temporary internal error");
lmtp_local_rcpt_anvil_disconnect(llrcpt);
master_service_settings_free(lldctx.smtp_set);
- master_service_settings_free(lldctx.lda_set);
return ret;
}
i_zero(&dinput);
dinput.session = lldctx->session;
- dinput.set = lldctx->lda_set;
+ dinput.set = llrcpt->lda_set;
dinput.smtp_set = lldctx->smtp_set;
dinput.session_id = lldctx->session_id;
dinput.event_parent = event;