]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: auth_penalty is now a global single instance.
authorTimo Sirainen <tss@iki.fi>
Sat, 13 Mar 2010 16:08:39 +0000 (18:08 +0200)
committerTimo Sirainen <tss@iki.fi>
Sat, 13 Mar 2010 16:08:39 +0000 (18:08 +0200)
--HG--
branch : HEAD

src/auth/auth-common.h
src/auth/auth-request-handler.c
src/auth/auth.c
src/auth/auth.h
src/auth/main.c

index 845a4f7d7700c169d0d50a32d48169da9c29986b..06dca43d5e076458a6e99b0c6ef6b786ff290e2e 100644 (file)
@@ -6,5 +6,6 @@
 
 extern bool worker, shutdown_request;
 extern time_t process_start_time;
+extern struct auth_penalty *auth_penalty;
 
 #endif
index dfd50cfab49da7f735f4a5ceac2cfc7b094fe098..9fe6bf47ecfaf51a2390d1ae7de1603e7972c4aa 100644 (file)
@@ -173,7 +173,7 @@ auth_request_handle_failure(struct auth_request *request,
        request->delayed_failure = TRUE;
        handler->refcount++;
 
-       auth_penalty_update(request->auth->penalty, request,
+       auth_penalty_update(auth_penalty, request,
                            request->last_penalty + 1);
 
        auth_request_refresh_last_access(request);
@@ -211,7 +211,7 @@ static void auth_callback(struct auth_request *request,
 
                if (request->last_penalty != 0) {
                        /* reset penalty */
-                       auth_penalty_update(request->auth->penalty, request, 0);
+                       auth_penalty_update(auth_penalty, request, 0);
                }
 
                auth_stream_reply_add(reply, "OK", NULL);
@@ -412,7 +412,7 @@ bool auth_request_handler_auth_begin(struct auth *auth,
        handler->refcount++;
 
        /* before we start authenticating, see if we need to wait first */
-       auth_penalty_lookup(request->auth->penalty, request,
+       auth_penalty_lookup(auth_penalty, request,
                            auth_penalty_callback);
        return TRUE;
 }
index f616b27c7e5dbfae5e6a087050107ba6d3a4c5ba..0d657821b21cf709acfc3dd9cbcc8c93b0bc4988 100644 (file)
 #include "passdb.h"
 #include "passdb-cache.h"
 #include "auth.h"
-#include "auth-penalty.h"
 #include "auth-request-handler.h"
 
 #include <stdlib.h>
 #include <unistd.h>
 
-#define AUTH_PENALTY_ANVIL_PATH "anvil-auth-penalty"
-
 struct auth_userdb_settings userdb_dummy_set = {
        .driver = "static",
        .args = ""
@@ -78,7 +75,6 @@ struct auth *auth_preinit(struct auth_settings *set)
                /* use a dummy userdb static. */
                userdb_preinit(auth, &userdb_dummy_set);
        }
-       auth->penalty = auth_penalty_init(AUTH_PENALTY_ANVIL_PATH);
        return auth;
 }
 
@@ -261,6 +257,5 @@ void auth_deinit(struct auth **_auth)
        auth_request_handler_deinit();
        passdb_cache_deinit();
 
-       auth_penalty_deinit(&auth->penalty);
        pool_unref(&auth->pool);
 }
index 31958da6e89f4da35e36b1409559720450cfdae1..af880561b252095f1e4bc01d1e2cfe60082f619a 100644 (file)
@@ -39,7 +39,6 @@ struct auth {
        struct auth_passdb *masterdbs;
        struct auth_passdb *passdbs;
        struct auth_userdb *userdbs;
-       struct auth_penalty *penalty;
 };
 
 const string_t *auth_mechanisms_get_list(struct auth *auth);
index fd528dd5f51f6a6739411d31a140603243c6abd2..24833c8b65b788848bb1af4d725df01789a8767b 100644 (file)
@@ -15,6 +15,7 @@
 #include "password-scheme.h"
 #include "mech.h"
 #include "auth.h"
+#include "auth-penalty.h"
 #include "auth-request-handler.h"
 #include "auth-worker-server.h"
 #include "auth-worker-client.h"
@@ -23,6 +24,8 @@
 
 #include <unistd.h>
 
+#define AUTH_PENALTY_ANVIL_PATH "anvil-auth-penalty"
+
 enum auth_socket_type {
        AUTH_SOCKET_UNKNOWN = 0,
        AUTH_SOCKET_CLIENT,
@@ -32,6 +35,7 @@ enum auth_socket_type {
 
 bool worker = FALSE, shutdown_request = FALSE;
 time_t process_start_time;
+struct auth_penalty *auth_penalty;
 
 static struct module *modules = NULL;
 static struct auth *auth;
@@ -62,6 +66,7 @@ static void main_preinit(void)
        module_dir_init(modules);
 
        auth = auth_preinit(global_auth_settings);
+       auth_penalty = auth_penalty_init(AUTH_PENALTY_ANVIL_PATH);
 
        /* Password lookups etc. may require roots, allow it. */
        restrict_access_by_env(NULL, FALSE);
@@ -107,6 +112,7 @@ static void main_deinit(void)
 
        mech_deinit(auth->set);
        auth_deinit(&auth);
+       auth_penalty_deinit(&auth_penalty);
 
        /* allow modules to unregister their dbs/drivers/etc. before freeing
           the whole data structures containing them. */