struct master_login_connection *prev, *next;
struct master_login *login;
+ struct master_login_client *clients;
int refcount;
int fd;
struct io *io;
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);
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);
return;
*_conn = NULL;
+ i_assert(conn->clients == NULL);
master_login_conn_close(conn);
o_stream_unref(&conn->output);
#define MASTER_POSTLOGIN_TIMEOUT_DEFAULT 60
struct master_login_client {
+ struct master_login_client *prev, *next;
struct master_login_connection *conn;
int fd;