changeset 26330:17a5d0c88f2f

lda: Add support for event API.
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Mon, 04 Mar 2019 01:12:55 +0100
parents 949e2dcbce55
children ba43cccd88e5
files src/lda/main.c
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lda/main.c	Mon Mar 04 01:08:21 2019 +0100
+++ b/src/lda/main.c	Mon Mar 04 01:12:55 2019 +0100
@@ -39,6 +39,10 @@
    where to read the mail. */
 #define MAIL_MAX_MEMORY_BUFFER (1024*128)
 
+struct event_category event_category_lda = {
+	.name = "lda",
+};
+
 static const char *wanted_headers[] = {
 	"From", "To", "Message-ID", "Subject", "Return-Path",
 	NULL
@@ -360,6 +364,7 @@
 	struct mail_storage_service_ctx *storage_service;
 	struct mail_storage_service_user *service_user;
 	struct mail_storage_service_input service_input;
+	struct event *event;
 	const char *user_source = "", *rcpt_to_source = "";
 	uid_t process_euid;
 	bool stderr_rejection = FALSE;
@@ -391,6 +396,9 @@
 		MASTER_SERVICE_FLAG_NO_INIT_DATASTACK_FRAME,
 		&argc, &argv, "a:d:ef:m:p:r:");
 
+	event = event_create(NULL);
+	event_add_category(event, &event_category_lda);
+
 	i_zero(&dinput);
 	dinput.session = mail_deliver_session_init();
 	dinput.rcpt_default_mailbox = "INBOX";
@@ -506,6 +514,17 @@
 	dinput.mail_from = mail_from;
 	dinput.rcpt_to = final_rcpt_to;
 
+	event_add_str(event, "user", user);
+	if (mail_from != NULL) {
+		event_add_str(event, "mail_from",
+			      smtp_address_encode(mail_from));
+	}
+	if (final_rcpt_to != NULL) {
+		event_add_str(event, "rcpt_to",
+			      smtp_address_encode(final_rcpt_to));
+	}
+	dinput.event_parent = event;
+
 	i_zero(&service_input);
 	service_input.module = "lda";
 	service_input.service = "lda";
@@ -553,6 +572,8 @@
 
 	mail_deliver_session_deinit(&dinput.session);
 	mail_storage_service_deinit(&storage_service);
+
+	event_unref(&event);
 	master_service_deinit(&master_service);
         return ret;
 }