#include <sys/stat.h>
#define AUTH_SUBSYS_PROXY "proxy"
-#define AUTH_DNS_SOCKET_PATH "dns-client"
-#define AUTH_DNS_DEFAULT_TIMEOUT_MSECS (1000*10)
#define AUTH_DNS_WARN_MSECS 500
#define AUTH_REQUEST_MAX_DELAY_SECS (60*5)
#define CACHED_PASSWORD_SCHEME "SHA1"
const char *host,
auth_request_proxy_cb_t *callback)
{
+ struct auth *auth = auth_default_service();
struct auth_request_proxy_dns_lookup_ctx *ctx;
- struct dns_lookup_settings dns_set;
const char *value;
unsigned int secs;
/* need to do dns lookup for the host */
- i_zero(&dns_set);
- dns_set.dns_client_socket_path = AUTH_DNS_SOCKET_PATH;
- dns_set.timeout_msecs = AUTH_DNS_DEFAULT_TIMEOUT_MSECS;
- dns_set.event_parent = request->event;
value = auth_fields_find(request->fields.extra_fields, "proxy_timeout");
if (value != NULL) {
if (str_to_uint(value, &secs) < 0) {
auth_request_log_error(request, AUTH_SUBSYS_PROXY,
"Invalid proxy_timeout value: %s", value);
- } else {
- dns_set.timeout_msecs = secs*1000;
}
}
auth_request_ref(request);
request->dns_lookup_ctx = ctx;
- if (dns_lookup(host, &dns_set, auth_request_proxy_dns_callback, ctx,
- &ctx->dns_lookup) < 0) {
+ if (dns_client_lookup(auth->dns_client, host, request->event,
+ auth_request_proxy_dns_callback, ctx,
+ &ctx->dns_lookup) < 0) {
/* failed early */
return -1;
}
#include "passdb-template.h"
#include "userdb-template.h"
#include "auth.h"
+#include "dns-lookup.h"
+
+#define AUTH_DNS_SOCKET_PATH "dns-client"
+#define AUTH_DNS_DEFAULT_TIMEOUT_MSECS (1000*10)
+#define AUTH_DNS_IDLE_TIMEOUT_MSECS (1000*60)
+#define AUTH_DNS_CACHE_TTL_SECS 10
struct event *auth_event;
struct event_category event_category_auth = {
{
struct auth_passdb *passdb;
struct auth_userdb *userdb;
+ struct dns_lookup_settings dns_set;
for (passdb = auth->masterdbs; passdb != NULL; passdb = passdb->next)
auth_passdb_init(passdb);
auth_passdb_init(passdb);
for (userdb = auth->userdbs; userdb != NULL; userdb = userdb->next)
userdb_init(userdb->userdb);
+
+ i_zero(&dns_set);
+ dns_set.dns_client_socket_path = AUTH_DNS_SOCKET_PATH;
+ dns_set.timeout_msecs = AUTH_DNS_DEFAULT_TIMEOUT_MSECS;
+ dns_set.idle_timeout_msecs = AUTH_DNS_IDLE_TIMEOUT_MSECS;
+ dns_set.cache_ttl_secs = AUTH_DNS_CACHE_TTL_SECS;
+
+ auth->dns_client = dns_client_init(&dns_set);
}
static void auth_deinit(struct auth *auth)
passdb_deinit(passdb->passdb);
for (userdb = auth->userdbs; userdb != NULL; userdb = userdb->next)
userdb_deinit(userdb->userdb);
+
+ dns_client_deinit(&auth->dns_client);
}
struct auth *auth_find_service(const char *name)
struct auth_passdb *masterdbs;
struct auth_passdb *passdbs;
struct auth_userdb *userdbs;
+
+ struct dns_client *dns_client;
};
extern struct auth_penalty *auth_penalty;
#include "test-auth.h"
#include "auth.h"
#include "str.h"
+#include "ioloop.h"
#include "auth-common.h"
#include "auth-request.h"
#include "auth-request-handler-private.h"
NULL
};
- return test_run(test_functions);
+ struct ioloop *ioloop = io_loop_create();
+ io_loop_set_current(ioloop);
+ int ret = test_run(test_functions);
+ io_loop_destroy(&ioloop);
+ return ret;
}