]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-proxy: Improve logging for successful logins
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 29 Apr 2020 09:52:38 +0000 (12:52 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 25 May 2020 08:38:55 +0000 (08:38 +0000)
Include how long it took to do the login and how many reconnects.

src/login-common/client-common-auth.c
src/login-common/login-proxy.c
src/login-common/login-proxy.h

index 0196a390921974f49e3c8448973d649d1f2c005e..73f0246df342393466c66341d6c6254376f1f254 100644 (file)
@@ -277,6 +277,7 @@ void client_proxy_finish_destroy_client(struct client *client)
        if (client->proxy_master_user != NULL)
                str_printfa(str, " (master %s)", client->proxy_master_user);
 
+       login_proxy_append_success_log_info(client->login_proxy, str);
        e_info(login_proxy_get_event(client->login_proxy), "%s", str_c(str));
        login_proxy_detach(client->login_proxy);
        client_destroy_success(client, NULL);
index 73b887e1d7611eba9a999c42825566019801e22b..c67727235e3b51069084f518086b5e448791b3fd 100644 (file)
@@ -174,6 +174,16 @@ static void proxy_fail_connect(struct login_proxy *proxy)
        proxy->num_waiting_connections_updated = TRUE;
 }
 
+void login_proxy_append_success_log_info(struct login_proxy *proxy,
+                                        string_t *str)
+{
+       int msecs = timeval_diff_msecs(&ioloop_timeval, &proxy->created);
+       str_printfa(str, " (%d.%03d secs", msecs/1000, msecs%1000);
+       if (proxy->reconnect_count > 0)
+               str_printfa(str, ", %u reconnects", proxy->reconnect_count);
+       str_append_c(str, ')');
+}
+
 static void
 proxy_log_connect_error(struct login_proxy *proxy, bool reconnect)
 {
index a853e81edc8eeb60d20b93a14994570d1f82fdb0..b08dfa1342315dcd7b15172e6a5b3bb433071a9f 100644 (file)
@@ -59,6 +59,8 @@ int login_proxy_starttls(struct login_proxy *proxy);
 struct istream *login_proxy_get_istream(struct login_proxy *proxy);
 struct ostream *login_proxy_get_ostream(struct login_proxy *proxy);
 
+void login_proxy_append_success_log_info(struct login_proxy *proxy,
+                                        string_t *str);
 struct event *login_proxy_get_event(struct login_proxy *proxy);
 const char *login_proxy_get_host(const struct login_proxy *proxy) ATTR_PURE;
 in_port_t login_proxy_get_port(const struct login_proxy *proxy) ATTR_PURE;