diff src/lib-master/master-login-auth.c @ 11248:1fd45deee948 HEAD

lib-master: Don't crash after timeouting an auth-master request.
author Timo Sirainen <tss@iki.fi>
date Mon, 03 May 2010 16:01:09 +0300
parents 0979e9e1e124
children e08dd68309a9
line wrap: on
line diff
--- a/src/lib-master/master-login-auth.c	Fri Apr 30 19:14:57 2010 +0300
+++ b/src/lib-master/master-login-auth.c	Mon May 03 16:01:09 2010 +0300
@@ -20,7 +20,9 @@
 struct master_login_auth_request {
 	struct master_login_auth_request *prev, *next;
 
+	unsigned int id;
 	time_t create_stamp;
+
 	master_login_auth_request_callback_t *callback;
 	void *context;
 };
@@ -131,6 +133,7 @@
 		request = auth->request_head;
 		DLLIST2_REMOVE(&auth->request_head,
 			       &auth->request_tail, request);
+		hash_table_remove(auth->requests, POINTER_CAST(request->id));
 
 		i_error("Auth server request timed out after %u secs",
 			(unsigned int)(ioloop_time - request->create_stamp));
@@ -360,6 +363,7 @@
 
 	login_req = i_new(struct master_login_auth_request, 1);
 	login_req->create_stamp = ioloop_time;
+	login_req->id = id;
 	login_req->callback = callback;
 	login_req->context = context;
 	hash_table_insert(auth->requests, POINTER_CAST(id), login_req);