Index: dovecot-2.2.29.1/src/lib-auth/auth-client-request.c =================================================================== --- dovecot-2.2.29.1/src/lib-auth/auth-client-request.c +++ dovecot-2.2.29.1/src/lib-auth/auth-client-request.c 2018-01-31 15:02:53.334467814 +0100 @@ -180,6 +180,8 @@ auth_client_send_cancel(request->conn->client, request->id); call_callback(request, AUTH_REQUEST_STATUS_ABORT, NULL, NULL); + auth_server_connection_remove_request(request->conn, request->id); + pool_unref(&request->pool); } unsigned int auth_client_request_get_id(struct auth_client_request *request) Index: dovecot-2.2.29.1/src/lib-auth/auth-server-connection.c =================================================================== --- dovecot-2.2.29.1/src/lib-auth/auth-server-connection.c +++ dovecot-2.2.29.1/src/lib-auth/auth-server-connection.c 2018-01-31 15:14:22.154476765 +0100 @@ -480,3 +480,10 @@ hash_table_insert(conn->requests, POINTER_CAST(id), request); return id; } + +void auth_server_connection_remove_request(struct auth_server_connection *conn, + unsigned int id) +{ + i_assert(conn->handshake_received); + hash_table_remove(conn->requests, POINTER_CAST(id)); +} Index: dovecot-2.2.29.1/src/lib-auth/auth-server-connection.h =================================================================== --- dovecot-2.2.29.1/src/lib-auth/auth-server-connection.h +++ dovecot-2.2.29.1/src/lib-auth/auth-server-connection.h 2018-01-31 15:14:33.444476912 +0100 @@ -38,4 +38,6 @@ unsigned int auth_server_connection_add_request(struct auth_server_connection *conn, struct auth_client_request *request); +void auth_server_connection_remove_request(struct auth_server_connection *conn, + unsigned int id); #endif