diff --git a/src/lib-smtp/smtp-params.c b/src/lib-smtp/smtp-params.c index 201ee779dc..201f56908f 100644 --- a/src/lib-smtp/smtp-params.c +++ b/src/lib-smtp/smtp-params.c @@ -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(¶ms->extra_params)) + return NULL; + + array_foreach(¶ms->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(¶ms->extra_params)) + return NULL; + + array_foreach(¶ms->extra_params, param) { + if (strcasecmp(param->keyword, keyword) == 0) + return param; + } + return NULL; +} diff --git a/src/lib-smtp/smtp-params.h b/src/lib-smtp/smtp-params.h index 8bf4269019..301d25895c 100644 --- a/src/lib-smtp/smtp-params.h +++ b/src/lib-smtp/smtp-params.h @@ -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