From: Timo Sirainen Date: Mon, 3 May 2010 13:01:09 +0000 (+0300) Subject: lib-master: Don't crash after timeouting an auth-master request. X-Git-Tag: 2.0.beta5~26 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a175496735a7a4c9536cdc217c1c9990c1df81c1;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Don't crash after timeouting an auth-master request. --HG-- branch : HEAD --- diff --git a/src/lib-master/master-login-auth.c b/src/lib-master/master-login-auth.c index 2e471b16a6..6a1db471d1 100644 --- a/src/lib-master/master-login-auth.c +++ b/src/lib-master/master-login-auth.c @@ -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 @@ static void master_login_auth_timeout(struct master_login_auth *auth) 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 @@ void master_login_auth_request(struct master_login_auth *auth, 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);