From 5f7ffdbe9f6bf4acea8558f88c06879fad1df1a5 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 23 Mar 2017 20:16:44 +0200 Subject: [PATCH] imap-login: Move forward_fields updating code to login-common This allows using the new client_add_forward_field() in e.g. plugins. --- src/imap-login/imap-login-client.c | 11 +---------- src/login-common/client-common.c | 14 ++++++++++++++ src/login-common/client-common.h | 2 ++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/imap-login/imap-login-client.c b/src/imap-login/imap-login-client.c index 755dc8e93f..ab76459494 100644 --- a/src/imap-login/imap-login-client.c +++ b/src/imap-login/imap-login-client.c @@ -7,7 +7,6 @@ #include "ostream.h" #include "safe-memset.h" #include "str.h" -#include "strescape.h" #include "imap-parser.h" #include "imap-id.h" #include "imap-resp-code.h" @@ -188,15 +187,7 @@ client_update_info(struct imap_client *client, } } else if (strncasecmp(key, "x-forward-", 10) == 0) { /* handle extra field */ - if (client->common.forward_fields == NULL) - client->common.forward_fields = str_new(client->common.preproxy_pool, 32); - else - str_append_c(client->common.forward_fields, '\t'); - /* prefixing is done by auth process */ - str_append_tabescaped(client->common.forward_fields, - key+10); - str_append_c(client->common.forward_fields, '='); - str_append_tabescaped(client->common.forward_fields, value); + client_add_forward_field(&client->common, key+10, value); } else { return FALSE; } diff --git a/src/login-common/client-common.c b/src/login-common/client-common.c index 29a278bc71..713695eb9f 100644 --- a/src/login-common/client-common.c +++ b/src/login-common/client-common.c @@ -11,6 +11,7 @@ #include "hook-build.h" #include "buffer.h" #include "str.h" +#include "strescape.h" #include "base64.h" #include "str-sanitize.h" #include "safe-memset.h" @@ -488,6 +489,19 @@ unsigned int clients_get_count(void) return clients_count; } +void client_add_forward_field(struct client *client, const char *key, + const char *value) +{ + if (client->forward_fields == NULL) + client->forward_fields = str_new(client->preproxy_pool, 32); + else + str_append_c(client->forward_fields, '\t'); + /* prefixing is done by auth process */ + str_append_tabescaped(client->forward_fields, key); + str_append_c(client->forward_fields, '='); + str_append_tabescaped(client->forward_fields, value); +} + const char *client_get_session_id(struct client *client) { buffer_t *buf, *base64_buf; diff --git a/src/login-common/client-common.h b/src/login-common/client-common.h index f7628b581b..522ad63db5 100644 --- a/src/login-common/client-common.h +++ b/src/login-common/client-common.h @@ -228,6 +228,8 @@ void client_cmd_starttls(struct client *client); unsigned int clients_get_count(void) ATTR_PURE; +void client_add_forward_field(struct client *client, const char *key, + const char *value); void client_set_title(struct client *client); void client_log(struct client *client, const char *msg); void client_log_err(struct client *client, const char *msg);