]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: params: Add functions to evaluate any extra (non-standard) MAIL and RCPT...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 13 Jan 2018 11:07:46 +0000 (12:07 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Thu, 18 Jan 2018 07:10:12 +0000 (09:10 +0200)
These allow looking up the parameter based on its name.

src/lib-smtp/smtp-params.c
src/lib-smtp/smtp-params.h

index 201ee779dc822bbefa9142bf46f663947ff34ad6..201f56908ff40a62d90edc625036424dece1d28a 100644 (file)
@@ -596,6 +596,24 @@ void smtp_params_mail_write(string_t *buffer,
                str_truncate(buffer, str_len(buffer)-1);
 }
 
+/* evaluate */
+
+const struct smtp_param *
+smtp_params_mail_get_extra(const struct smtp_params_mail *params,
+                          const char *keyword)
+{
+       const struct smtp_param *param;
+
+       if (!array_is_created(&params->extra_params))
+               return NULL;
+
+       array_foreach(&params->extra_params, param) {
+               if (strcasecmp(param->keyword, keyword) == 0)
+                       return param;
+       }
+       return NULL;
+}
+
 /*
  * RCPT parameters
  */
@@ -986,3 +1004,21 @@ void smtp_params_rcpt_write(string_t *buffer,
        if (str_len(buffer) > init_len)
                str_truncate(buffer, str_len(buffer)-1);
 }
+
+/* evaluate */
+
+const struct smtp_param *
+smtp_params_rcpt_get_extra(const struct smtp_params_rcpt *params,
+                          const char *keyword)
+{
+       const struct smtp_param *param;
+
+       if (!array_is_created(&params->extra_params))
+               return NULL;
+
+       array_foreach(&params->extra_params, param) {
+               if (strcasecmp(param->keyword, keyword) == 0)
+                       return param;
+       }
+       return NULL;
+}
index 8bf426901902eaf0a7d8738a8b16fd133b51f8ff..301d25895ca0e4d9240d356e5ad12c54046d25d6 100644 (file)
@@ -100,6 +100,10 @@ void smtp_params_mail_write(string_t *buffer,
        enum smtp_capability caps,
        const struct smtp_params_mail *params);
 
+const struct smtp_param *
+smtp_params_mail_get_extra(const struct smtp_params_mail *params,
+                          const char *keyword);
+
 /*
  * RCPT parameters
  */
@@ -118,4 +122,8 @@ void smtp_params_rcpt_write(string_t *buffer,
        enum smtp_capability caps,
        const struct smtp_params_rcpt *params);
 
+const struct smtp_param *
+smtp_params_rcpt_get_extra(const struct smtp_params_rcpt *params,
+                          const char *keyword);
+
 #endif