changeset 22965:a382709de5e8

lib-master: Keep linked list of master_login_clients per connection This allows improving logging on connection errors.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Fri, 04 May 2018 13:07:50 +0300
parents 7f4439b04050
children 97f4fd2d1566
files src/lib-master/master-login.c src/lib-master/master-login.h
diffstat 2 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-master/master-login.c	Fri Apr 13 16:14:18 2018 +0300
+++ b/src/lib-master/master-login.c	Fri May 04 13:07:50 2018 +0300
@@ -24,6 +24,7 @@
 	struct master_login_connection *prev, *next;
 
 	struct master_login *login;
+	struct master_login_client *clients;
 	int refcount;
 	int fd;
 	struct io *io;
@@ -192,6 +193,7 @@
 		i_assert(client->conn->refcount > 1);
 		client->conn->refcount--;
 	}
+	DLLIST_REMOVE(&client->conn->clients, client);
 	master_login_conn_unref(&client->conn);
 	i_free(client->session_id);
 	i_free(client);
@@ -444,6 +446,7 @@
 	client->session_id = i_strndup(data, session_len);
 	memcpy(client->data, data+i, req.data_size);
 	conn->refcount++;
+	DLLIST_PREPEND(&conn->clients, client);
 
 	master_login_auth_request(login->auth, &req,
 				  master_login_auth_callback, client);
@@ -491,6 +494,7 @@
 		return;
 
 	*_conn = NULL;
+	i_assert(conn->clients == NULL);
 	master_login_conn_close(conn);
 	o_stream_unref(&conn->output);
 
--- a/src/lib-master/master-login.h	Fri Apr 13 16:14:18 2018 +0300
+++ b/src/lib-master/master-login.h	Fri May 04 13:07:50 2018 +0300
@@ -6,6 +6,7 @@
 #define MASTER_POSTLOGIN_TIMEOUT_DEFAULT 60
 
 struct master_login_client {
+	struct master_login_client *prev, *next;
 	struct master_login_connection *conn;
 	int fd;