]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: params: Add functions for adding extra MAIL/RCPT parameters.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Wed, 3 Oct 2018 20:05:10 +0000 (22:05 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 12 Feb 2019 13:40:51 +0000 (15:40 +0200)
src/lib-smtp/smtp-params.c
src/lib-smtp/smtp-params.h

index 9217d3ffdf1f1e3ce5b8b4f86386bfb5e827f66b..d849c840af4a5340a8785573bb62f4ed748bec7b 100644 (file)
@@ -404,11 +404,8 @@ int smtp_params_mail_parse(pool_t pool, const char *args,
                           str_array_icase_find(extensions, param.keyword)) {
                        /* add the rest to ext_param for specific
                           applications */
-                       if (!array_is_created(&params_r->extra_params))
-                               p_array_init(&params_r->extra_params, pool, 4);
-                       param.keyword = p_strdup(pool, param.keyword);
-                       param.value = p_strdup(pool, param.value);
-                       array_append(&params_r->extra_params, &param, 1);
+                       smtp_params_mail_add_extra(params_r, pool,
+                                                  param.keyword, param.value);
                } else {
                        /* RFC 5321, Section 4.1.1.11:
                           If the server SMTP does not recognize or cannot
@@ -459,6 +456,20 @@ void smtp_params_mail_copy(pool_t pool,
        }
 }
 
+void smtp_params_mail_add_extra(struct smtp_params_mail *params, pool_t pool,
+                               const char *keyword, const char *value)
+{
+       struct smtp_param param;
+
+       if (!array_is_created(&params->extra_params))
+               p_array_init(&params->extra_params, pool, 4);
+
+       i_zero(&param);
+       param.keyword = p_strdup(pool, keyword);
+       param.value = p_strdup(pool, value);
+       array_append(&params->extra_params, &param, 1);
+}
+
 /* write */
 
 static void
@@ -877,11 +888,8 @@ int smtp_params_rcpt_parse(pool_t pool, const char *args,
                           str_array_icase_find(extensions, param.keyword)) {
                        /* add the rest to ext_param for specific applications
                         */
-                       if (!array_is_created(&params_r->extra_params))
-                               p_array_init(&params_r->extra_params, pool, 4);
-                       param.keyword = p_strdup(pool, param.keyword);
-                       param.value = p_strdup(pool, param.value);
-                       array_append(&params_r->extra_params, &param, 1);
+                       smtp_params_rcpt_add_extra(params_r, pool,
+                                                  param.keyword, param.value);
                } else {
                        /* RFC 5321, Section 4.1.1.11:
                           If the server SMTP does not recognize or cannot
@@ -930,6 +938,20 @@ void smtp_params_rcpt_copy(pool_t pool,
        }
 }
 
+void smtp_params_rcpt_add_extra(struct smtp_params_rcpt *params, pool_t pool,
+                               const char *keyword, const char *value)
+{
+       struct smtp_param param;
+
+       if (!array_is_created(&params->extra_params))
+               p_array_init(&params->extra_params, pool, 4);
+
+       i_zero(&param);
+       param.keyword = p_strdup(pool, keyword);
+       param.value = p_strdup(pool, value);
+       array_append(&params->extra_params, &param, 1);
+}
+
 /* write */
 
 static void
index 11cfb66ed496c675a581d545585536ec481208fe..6e89425b3758ed4c0cd4a9baa6a72619e89ab71b 100644 (file)
@@ -98,6 +98,11 @@ void smtp_params_mail_copy(pool_t pool,
        struct smtp_params_mail *dst, const struct smtp_params_mail *src)
        ATTR_NULL(3);
 
+void smtp_params_mail_add_extra(struct smtp_params_mail *params, pool_t pool,
+                               const char *keyword, const char *value);
+
+/* write */
+
 void smtp_params_mail_write(string_t *buffer,
        enum smtp_capability caps,
        const struct smtp_params_mail *params);
@@ -121,6 +126,11 @@ void smtp_params_rcpt_copy(pool_t pool,
        struct smtp_params_rcpt *dst, const struct smtp_params_rcpt *src)
        ATTR_NULL(3);
 
+void smtp_params_rcpt_add_extra(struct smtp_params_rcpt *params, pool_t pool,
+                               const char *keyword, const char *value);
+
+/* write */
+
 void smtp_params_rcpt_write(string_t *buffer,
        enum smtp_capability caps,
        const struct smtp_params_rcpt *params);