From: Stephan Bosch Date: Wed, 22 Apr 2020 21:24:21 +0000 (+0200) Subject: lib-smtp: smtp-params - Split off smtp_params_equal() from smtp_params_rcpt_equal(). X-Git-Tag: 2.3.13~551 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dc3de46652d55b6aa01f224b7b133f3f252ceef4;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-params - Split off smtp_params_equal() from smtp_params_rcpt_equal(). --- diff --git a/src/lib-smtp/smtp-params.c b/src/lib-smtp/smtp-params.c index d7b767c084..2592955857 100644 --- a/src/lib-smtp/smtp-params.c +++ b/src/lib-smtp/smtp-params.c @@ -197,6 +197,31 @@ smtp_params_get_param(const ARRAY_TYPE(smtp_param) *params, return NULL; } +bool smtp_params_equal(const ARRAY_TYPE(smtp_param) *params1, + const ARRAY_TYPE(smtp_param) *params2) +{ + const struct smtp_param *param1, *param2; + + if (!array_is_created(params1) || array_count(params1) == 0) { + return (!array_is_created(params2) || + array_count(params2) == 0); + } + if (!array_is_created(params2) || array_count(params2) == 0) + return FALSE; + + if (array_count(params1) != array_count(params2)) + return FALSE; + + array_foreach(params1, param1) { + param2 = smtp_params_get_param(params2, param1->keyword); + if (param2 == NULL) + return FALSE; + if (null_strcmp(param1->value, param2->value) != 0) + return FALSE; + } + return TRUE; +} + /* * MAIL parameters */ @@ -1221,25 +1246,8 @@ bool smtp_params_rcpt_equal(const struct smtp_params_rcpt *params1, } /* extra parameters */ - if (array_is_created(¶ms1->extra_params) != - array_is_created(¶ms2->extra_params)) - return FALSE; - if (array_is_created(¶ms1->extra_params)) { - const struct smtp_param *param1, *param2; - - if (array_count(¶ms1->extra_params) != - array_count(¶ms2->extra_params)) - return FALSE; - array_foreach(¶ms1->extra_params, param1) { - param2 = smtp_params_rcpt_get_extra( - params2, param1->keyword); - if (param2 == NULL) - return FALSE; - if (null_strcmp(param1->value, param2->value) != 0) - return FALSE; - } - } - return TRUE; + return smtp_params_equal(¶ms1->extra_params, + ¶ms2->extra_params); } /* events */ diff --git a/src/lib-smtp/smtp-params.h b/src/lib-smtp/smtp-params.h index 80a5fe3e15..777ec8a99f 100644 --- a/src/lib-smtp/smtp-params.h +++ b/src/lib-smtp/smtp-params.h @@ -103,6 +103,9 @@ const struct smtp_param * smtp_params_get_param(const ARRAY_TYPE(smtp_param) *params, const char *keyword); +bool smtp_params_equal(const ARRAY_TYPE(smtp_param) *params1, + const ARRAY_TYPE(smtp_param) *params2); + /* * MAIL parameters */