]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: server: transaction: Add function that finds duplicate recipients.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 13 Jan 2018 11:26:57 +0000 (12:26 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 18 Jan 2018 07:10:12 +0000 (09:10 +0200)
Duplicate means that both the path and parameters are equal.

src/lib-smtp/smtp-server-transaction.c
src/lib-smtp/smtp-server.h

index f67e9b48f8ddb093d49d66f8d69fdb6eac6f57cc..9c3e6bb3b0f0c53f6c3750919bf374670880d76f 100644 (file)
@@ -51,6 +51,26 @@ void smtp_server_transaction_free(struct smtp_server_transaction **_trans)
        *_trans = NULL;
 }
 
+struct smtp_server_recipient *
+smtp_server_transaction_find_rcpt_duplicate(
+       struct smtp_server_transaction *trans,
+       struct smtp_server_recipient *rcpt)
+{
+       struct smtp_server_recipient *const *rcptp;
+
+       i_assert(array_is_created(&trans->rcpt_to));
+       array_foreach(&trans->rcpt_to, rcptp) {
+               struct smtp_server_recipient *drcpt = *rcptp;
+
+               if (drcpt == rcpt)
+                       continue;
+               if (smtp_address_equals(drcpt->path, rcpt->path) &&
+                   smtp_params_rcpt_equals(&drcpt->params, &rcpt->params))
+                       return drcpt;
+       }
+       return NULL;
+}
+
 struct smtp_server_recipient *
 smtp_server_transaction_add_rcpt(struct smtp_server_transaction *trans,
                                 const struct smtp_address *rcpt_to,
index 2884f0221e194a23d4672c498b3278c70f1431d8..c2bf4cdc8557d5a6c8af67695ddd0a6fca82667e 100644 (file)
@@ -69,6 +69,11 @@ struct smtp_server_transaction {
        void *context;
 };
 
+struct smtp_server_recipient *
+smtp_server_transaction_find_rcpt_duplicate(
+       struct smtp_server_transaction *trans,
+       struct smtp_server_recipient *rcpt);
+
 void smtp_server_transaction_fail_data(
        struct smtp_server_transaction *trans,
        struct smtp_server_cmd_ctx *data_cmd,