]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Don't crash after timeouting an auth-master request.
authorTimo Sirainen <tss@iki.fi>
Mon, 3 May 2010 13:01:09 +0000 (16:01 +0300)
committerTimo Sirainen <tss@iki.fi>
Mon, 3 May 2010 13:01:09 +0000 (16:01 +0300)
--HG--
branch : HEAD

src/lib-master/master-login-auth.c

index 2e471b16a681c6611ec4b912ff5d311b91bac024..6a1db471d1ab74b09fead1344cfb658ee3360c56 100644 (file)
@@ -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);