]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-params - Split off smtp_params_equal() from smtp_params_rcpt_equal().
authorStephan Bosch <stephan.bosch@open-xchange.com>
Wed, 22 Apr 2020 21:24:21 +0000 (23:24 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 27 May 2020 05:32:15 +0000 (05:32 +0000)
src/lib-smtp/smtp-params.c
src/lib-smtp/smtp-params.h

index d7b767c084d17ac70561f1bb3d00faf38e26bd3c..2592955857201bf0d8936181b60a79be0b21b0cc 100644 (file)
@@ -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(&params1->extra_params) !=
-           array_is_created(&params2->extra_params))
-               return FALSE;
-       if (array_is_created(&params1->extra_params)) {
-               const struct smtp_param *param1, *param2;
-       
-               if (array_count(&params1->extra_params) !=
-                   array_count(&params2->extra_params))
-                       return FALSE;
-               array_foreach(&params1->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(&params1->extra_params,
+                                &params2->extra_params);
 }
 
 /* events */
index 80a5fe3e15dbd675fe3149f1ebd8fa81594e69bc..777ec8a99fb622dfa7b555b325d2774e7bb8a415 100644 (file)
@@ -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
  */