]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-common: Add login_proxy_get_redirect_path()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 14 May 2020 21:39:10 +0000 (00:39 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Mon, 17 Jan 2022 11:52:08 +0000 (13:52 +0200)
src/login-common/login-proxy.c
src/login-common/login-proxy.h

index 562719476bc1edb17651434dae0e5077705bc600..01f53ba192058be0840f4798e2478a142ae26cb3 100644 (file)
@@ -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;
index 74edb13124641048277e1e8220392644223fe0c4..a96fc869629a4cf8083ec26c5f790f7c561aac0b 100644 (file)
@@ -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);