From: Stephan Bosch Date: Fri, 1 Oct 2021 22:36:09 +0000 (+0200) Subject: lib-smtp: smtp-server-transaction - Base transaction ID on connection session ID. X-Git-Tag: 2.3.18~241 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c8423c354b8b3fc5ea88de93ba731ee9320a02f6;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-server-transaction - Base transaction ID on connection session ID. Composed as ":". --- diff --git a/src/lib-smtp/smtp-server-private.h b/src/lib-smtp/smtp-server-private.h index 3c890054f0..54edb6beda 100644 --- a/src/lib-smtp/smtp-server-private.h +++ b/src/lib-smtp/smtp-server-private.h @@ -164,6 +164,7 @@ struct smtp_server_connection { char *helo_domain, *username; char *session_id; + unsigned int transaction_seq; struct timeout *to_idle; struct istream *raw_input; diff --git a/src/lib-smtp/smtp-server-transaction.c b/src/lib-smtp/smtp-server-transaction.c index d91775f147..07bc44302d 100644 --- a/src/lib-smtp/smtp-server-transaction.c +++ b/src/lib-smtp/smtp-server-transaction.c @@ -4,8 +4,6 @@ #include "array.h" #include "str.h" #include "strfuncs.h" -#include "guid.h" -#include "base64.h" #include "message-date.h" #include "smtp-address.h" #include "smtp-params.h" @@ -18,6 +16,7 @@ smtp_server_transaction_update_event(struct smtp_server_transaction *trans) struct event *event = trans->event; event_add_str(event, "transaction_id", trans->id); + event_add_str(event, "session", trans->id); event_add_str(event, "mail_from", smtp_address_encode(trans->mail_from)); event_add_str(event, "mail_from_raw", @@ -33,8 +32,6 @@ smtp_server_transaction_create(struct smtp_server_connection *conn, { struct smtp_server_transaction *trans; pool_t pool; - guid_128_t guid; - string_t *id; /* create new transaction */ pool = pool_alloconly_create("smtp server transaction", 4096); @@ -43,12 +40,9 @@ smtp_server_transaction_create(struct smtp_server_connection *conn, trans->conn = conn; /* generate transaction ID */ - id = t_str_new(30); - guid_128_generate(guid); - base64_encode(guid, sizeof(guid), id); - i_assert(str_c(id)[str_len(id)-2] == '='); - str_truncate(id, str_len(id)-2); /* drop trailing "==" */ - trans->id = p_strdup(pool, str_c(id)); + conn->transaction_seq++; + trans->id = p_strdup_printf(pool, "%s:%u", conn->session_id, + conn->transaction_seq); trans->flags = mail_data->flags; trans->mail_from = smtp_address_clone(trans->pool, mail_data->path);