dovecot-2.0-sslstream: auth: Connect to anvil-auth-penalty befor...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Feb 13 02:56:21 EET 2010
details: http://hg.dovecot.org/dovecot-2.0-sslstream/rev/9bec70f26637
changeset: 10311:9bec70f26637
user: Timo Sirainen <tss at iki.fi>
date: Wed Nov 11 13:55:49 2009 -0500
description:
auth: Connect to anvil-auth-penalty before dropping root privileges.
diffstat:
3 files changed, 11 insertions(+), 7 deletions(-)
src/auth/auth-request-handler.c | 11 ++++-------
src/auth/auth.c | 6 ++++++
src/auth/auth.h | 1 +
diffs (105 lines):
diff -r 49d92c3fa17a -r 9bec70f26637 src/auth/auth-request-handler.c
--- a/src/auth/auth-request-handler.c Wed Nov 11 12:51:10 2009 -0500
+++ b/src/auth/auth-request-handler.c Wed Nov 11 13:55:49 2009 -0500
@@ -16,13 +16,11 @@
#include <stdlib.h>
#define AUTH_FAILURE_DELAY_CHECK_MSECS 500
-#define AUTH_PENALTY_ANVIL_PATH "anvil-auth-penalty"
struct auth_request_handler {
int refcount;
pool_t pool;
struct hash_table *requests;
- struct auth_penalty *penalty;
struct auth *auth;
unsigned int connect_uid, client_pid;
@@ -58,7 +56,6 @@ auth_request_handler_create(struct auth
handler->callback = callback;
handler->context = context;
handler->master_callback = master_callback;
- handler->penalty = auth_penalty_init(AUTH_PENALTY_ANVIL_PATH);
return handler;
}
@@ -84,7 +81,6 @@ void auth_request_handler_unref(struct a
/* notify parent that we're done with all requests */
handler->callback(NULL, handler->context);
- auth_penalty_deinit(&handler->penalty);
hash_table_destroy(&handler->requests);
pool_unref(&handler->pool);
}
@@ -193,7 +189,7 @@ auth_request_handle_failure(struct auth_
request->delayed_failure = TRUE;
handler->refcount++;
- auth_penalty_update(handler->penalty, request,
+ auth_penalty_update(request->auth->penalty, request,
request->last_penalty + 1);
request->last_access = ioloop_time;
@@ -231,7 +227,7 @@ static void auth_callback(struct auth_re
if (request->last_penalty != 0) {
/* reset penalty */
- auth_penalty_update(handler->penalty, request, 0);
+ auth_penalty_update(request->auth->penalty, request, 0);
}
auth_stream_reply_add(reply, "OK", NULL);
@@ -421,7 +417,8 @@ bool auth_request_handler_auth_begin(str
handler->refcount++;
/* before we start authenticating, see if we need to wait first */
- auth_penalty_lookup(handler->penalty, request, auth_penalty_callback);
+ auth_penalty_lookup(request->auth->penalty, request,
+ auth_penalty_callback);
return TRUE;
}
diff -r 49d92c3fa17a -r 9bec70f26637 src/auth/auth.c
--- a/src/auth/auth.c Wed Nov 11 12:51:10 2009 -0500
+++ b/src/auth/auth.c Wed Nov 11 13:55:49 2009 -0500
@@ -10,10 +10,13 @@
#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 = {
MEMBER(driver) "static",
@@ -255,6 +258,8 @@ void auth_init(struct auth *auth)
for (; *p != '\0' && p[1] != '\0'; p += 2)
auth->username_translation[(int)(uint8_t)*p] = p[1];
}
+
+ auth->penalty = auth_penalty_init(AUTH_PENALTY_ANVIL_PATH);
}
void auth_deinit(struct auth **_auth)
@@ -275,5 +280,6 @@ void auth_deinit(struct auth **_auth)
auth_request_handler_deinit();
passdb_cache_deinit();
+ auth_penalty_deinit(&auth->penalty);
pool_unref(&auth->pool);
}
diff -r 49d92c3fa17a -r 9bec70f26637 src/auth/auth.h
--- a/src/auth/auth.h Wed Nov 11 12:51:10 2009 -0500
+++ b/src/auth/auth.h Wed Nov 11 13:55:49 2009 -0500
@@ -39,6 +39,7 @@ struct auth {
struct auth_passdb *masterdbs;
struct auth_passdb *passdbs;
struct auth_userdb *userdbs;
+ struct auth_penalty *penalty;
const char *const *auth_realms;
char username_chars[256];
More information about the dovecot-cvs
mailing list