From: Timo Sirainen Date: Thu, 14 May 2020 21:39:10 +0000 (+0300) Subject: login-common: Add login_proxy_get_redirect_path() X-Git-Tag: 2.4.0~4826 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6db702d4a60cc63dd3bd614dff3032e973d76306;p=thirdparty%2Fdovecot%2Fcore.git login-common: Add login_proxy_get_redirect_path() --- diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 562719476b..01f53ba192 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -757,6 +757,19 @@ void login_proxy_redirect_finish(struct login_proxy *proxy, (void)login_proxy_connect(proxy); } +void login_proxy_get_redirect_path(struct login_proxy *proxy, string_t *str) +{ + const struct login_proxy_redirect *redirect; + + str_printfa(str, "%s:%u", net_ip2addr(&proxy->ip), proxy->port); + if (!array_is_created(&proxy->redirect_path)) + return; + array_foreach(&proxy->redirect_path, redirect) { + str_printfa(str, ",%s:%u", + net_ip2addr(&redirect->ip), redirect->port); + } +} + struct istream *login_proxy_get_istream(struct login_proxy *proxy) { return proxy->server_input; diff --git a/src/login-common/login-proxy.h b/src/login-common/login-proxy.h index 74edb13124..a96fc86962 100644 --- a/src/login-common/login-proxy.h +++ b/src/login-common/login-proxy.h @@ -88,6 +88,8 @@ int login_proxy_new(struct client *client, struct event *event, /* Free the proxy. This should be called if authentication fails. */ void login_proxy_free(struct login_proxy **proxy); +/* Append to str host:ip[,host2:ip[,...]] path of redirects followed so far. */ +void login_proxy_get_redirect_path(struct login_proxy *proxy, string_t *str); /* Finish redirection to ip:port from a redirect callback. */ void login_proxy_redirect_finish(struct login_proxy *proxy, const struct ip_addr *ip, in_port_t port);