Mercurial > dovecot > core-2.2
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;