return;
if (conn->state.trans == NULL) {
- /* Use connection event directly if there is no transaction */
- rcpt->event = event_create(conn->event);
+ /* Create event for the transaction early. */
+ if (conn->next_trans_event == NULL) {
+ conn->next_trans_event = event_create(conn->event);
+ event_set_append_log_prefix(conn->next_trans_event,
+ "trans: ");
+ }
+ rcpt->event = event_create(conn->next_trans_event);
} else {
- /* Use transaction event, but drop its log prefix so that the
- connection event prefix remains. */
+ /* Use existing transaction event. */
rcpt->event = event_create(conn->state.trans->event);
- event_drop_parent_log_prefixes(rcpt->event, 1);
}
+ /* Drop transaction log prefix so that the connection event prefix
+ remains. */
+ event_drop_parent_log_prefixes(rcpt->event, 1);
+
smtp_server_recipient_update_event(prcpt);
}
prcpt->rcpt.path = smtp_address_clone(pool, rcpt_to);
smtp_params_rcpt_copy(pool, &prcpt->rcpt.params, params);
+ smtp_server_recipient_create_event(prcpt);
+
return &prcpt->rcpt;
}
smtp_params_mail_copy(pool, &trans->params, &mail_data->params);
trans->timestamp = mail_data->timestamp;
- trans->event = event_create(conn->event);
+ if (conn->next_trans_event == NULL)
+ trans->event = event_create(conn->event);
+ else {
+ trans->event = conn->next_trans_event;
+ conn->next_trans_event = NULL;
+ }
smtp_server_transaction_update_event(trans);
struct event_passthrough *e =