Mercurial > dovecot > core-2.2
changeset 10908:4ca5dfd58d47 HEAD
auth: Fixed crash at deinit.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 14 Mar 2010 15:09:14 +0200 |
parents | 3f43b5c47a0e |
children | 1e333d2918f1 |
files | src/auth/auth.c src/auth/main.c src/auth/passdb-cache.h |
diffstat | 3 files changed, 10 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/src/auth/auth.c Sun Mar 14 15:02:28 2010 +0200 +++ b/src/auth/auth.c Sun Mar 14 15:09:14 2010 +0200 @@ -1,19 +1,11 @@ /* Copyright (c) 2005-2010 Dovecot authors, see the included COPYING file */ #include "auth-common.h" -#include "network.h" #include "array.h" -#include "str.h" -#include "env-util.h" #include "mech.h" #include "userdb.h" #include "passdb.h" -#include "passdb-cache.h" #include "auth.h" -#include "auth-request-handler.h" - -#include <stdlib.h> -#include <unistd.h> struct auth_userdb_settings userdb_dummy_set = { .driver = "static", @@ -204,10 +196,6 @@ for (userdb = auth->userdbs; userdb != NULL; userdb = userdb->next) userdb_init(userdb->userdb); - /* caching is handled only by the main auth process */ - if (!worker) - passdb_cache_init(auth->set); - auth_mech_list_verify_passdb(auth); } @@ -226,9 +214,6 @@ for (userdb = auth->userdbs; userdb != NULL; userdb = userdb->next) userdb_deinit(userdb->userdb); - auth_request_handler_deinit(); - passdb_cache_deinit(); - pool_unref(&auth->pool); }
--- a/src/auth/main.c Sun Mar 14 15:02:28 2010 +0200 +++ b/src/auth/main.c Sun Mar 14 15:09:14 2010 +0200 @@ -13,6 +13,7 @@ #include "master-service.h" #include "master-interface.h" #include "password-scheme.h" +#include "passdb-cache.h" #include "mech.h" #include "auth.h" #include "auth-penalty.h" @@ -97,6 +98,9 @@ /* workers have only a single connection from the master auth process */ master_service_set_client_limit(master_service, 1); + } else { + /* caching is handled only by the main auth process */ + passdb_cache_init(global_auth_settings); } } @@ -111,9 +115,12 @@ auth_master_connections_deinit(); auth_worker_server_deinit(); + auths_deinit(); + auth_request_handler_deinit(); + passdb_cache_deinit(); + + mech_register_deinit(&mech_reg); mech_deinit(global_auth_settings); - auths_deinit(); - mech_register_deinit(&mech_reg); auth_penalty_deinit(&auth_penalty); /* allow modules to unregister their dbs/drivers/etc. before freeing
--- a/src/auth/passdb-cache.h Sun Mar 14 15:02:28 2010 +0200 +++ b/src/auth/passdb-cache.h Sun Mar 14 15:09:14 2010 +0200 @@ -3,6 +3,7 @@ #include "auth-cache.h" +enum passdb_result; extern struct auth_cache *passdb_cache; bool passdb_cache_verify_plain(struct auth_request *request, const char *key,