From: Stephan Bosch Date: Sat, 13 Jan 2018 11:07:46 +0000 (+0100) Subject: lib-smtp: params: Add functions to evaluate any extra (non-standard) MAIL and RCPT... X-Git-Tag: 2.3.1~220 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7eb098b89f71dd809a687b187e79d789b8b8e2b5;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: params: Add functions to evaluate any extra (non-standard) MAIL and RCPT parameters. These allow looking up the parameter based on its name. --- 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