ret = ldap_get_option(conn->ld, LDAP_OPT_ERROR_NUMBER, (void *) &err);
if (ret != LDAP_SUCCESS) {
- i_error("LDAP: Can't get error number: %s",
+ e_error(conn->event, "Can't get error number: %s",
ldap_err2string(ret));
return LDAP_UNAVAILABLE;
}
static int db_ldap_connect_finish(struct ldap_connection *conn, int ret)
{
if (ret == LDAP_SERVER_DOWN) {
- i_error("LDAP: Can't connect to server: %s",
+ e_error(conn->event, "Can't connect to server: %s",
conn->set.uris != NULL ?
conn->set.uris : conn->set.hosts);
return -1;
}
if (ret != LDAP_SUCCESS) {
- i_error("LDAP: binding failed (dn %s): %s",
+ e_error(conn->event, "binding failed (dn %s): %s",
conn->set.dn == NULL ? "(none)" : conn->set.dn,
ldap_get_error(conn));
return -1;
/* we're going to ignore this */
return FALSE;
default:
- i_error("LDAP: Reply with unexpected type %d",
+ e_error(conn->event, "Reply with unexpected type %d",
ldap_msgtype(res->msg));
return TRUE;
}
request = db_ldap_find_request(conn, msgid, &idx);
if (request == NULL) {
- i_error("LDAP: Reply with unknown msgid %d", msgid);
+ e_error(conn->event, "Reply with unknown msgid %d", msgid);
return;
}
/* request is allocated from auth_request's pool */
while (db_ldap_request_queue_next(conn))
;
} else if (ldap_get_errno(conn) != LDAP_SERVER_DOWN) {
- i_error("LDAP: ldap_result() failed: %s", ldap_get_error(conn));
+ e_error(conn->event, "ldap_result() failed: %s", ldap_get_error(conn));
ldap_conn_reconnect(conn);
} else if (aqueue_count(conn->request_queue) > 0 ||
prev_reply_diff < DB_LDAP_IDLE_RECONNECT_SECS) {
- i_error("LDAP: Connection lost to LDAP server, reconnecting");
+ e_error(conn->event, "Connection lost to LDAP server, reconnecting");
ldap_conn_reconnect(conn);
} else {
/* server probably disconnected an idle connection. don't
{
i_assert(conn->conn_state == LDAP_CONN_STATE_BINDING);
- i_error("LDAP %s: Initial binding to LDAP server timed out",
- conn->config_path);
+ e_error(conn->event, "Initial binding to LDAP server timed out");
db_ldap_conn_close(conn);
}
if (str_to_int(conn->set.debug_level, &value) >= 0 && value != 0) {
db_ldap_set_opt(conn, NULL, LDAP_OPT_DEBUG_LEVEL, &value,
"debug_level", conn->set.debug_level);
+ event_set_forced_debug(conn->event, TRUE);
}
#endif
int db_ldap_connect(struct ldap_connection *conn)
{
- int debug_level;
- bool debug;
struct timeval start, end;
int ret;
- debug = FALSE;
- if (str_to_int(conn->set.debug_level, &debug_level) >= 0)
- debug = debug_level > 0;
-
if (conn->conn_state != LDAP_CONN_STATE_DISCONNECTED)
return 0;
- if (debug)
- i_gettimeofday(&start);
+ i_gettimeofday(&start);
i_assert(conn->pending_count == 0);
if (conn->delayed_connect) {
i_fatal("LDAP %s: Don't use both tls=yes "
"and ldaps URI", conn->config_path);
}
- i_error("LDAP %s: ldap_start_tls_s() failed: %s",
- conn->config_path, ldap_err2string(ret));
+ e_error(conn->event, "ldap_start_tls_s() failed: %s",
+ ldap_err2string(ret));
return -1;
}
#else
if (db_ldap_bind(conn) < 0)
return -1;
- if (debug) {
- i_gettimeofday(&end);
- int msecs = timeval_diff_msecs(&end, &start);
- i_debug("LDAP initialization took %d msecs", msecs);
- }
+ i_gettimeofday(&end);
+ int msecs = timeval_diff_msecs(&end, &start);
+ e_debug(conn->event, "LDAP initialization took %d msecs", msecs);
db_ldap_get_fd(conn);
conn->io = io_add(conn->fd, IO_READ, ldap_input, conn);
}
if (*name == '\0')
- i_error("LDAP %s: Invalid attrs entry: %s", conn->config_path, attr_data);
+ e_error(conn->event, "Invalid attrs entry: %s", attr_data);
else if (skip_attr == NULL || strcmp(skip_attr, name) != 0) {
field = array_append_space(attr_map);
if (name[0] == '@') {
if (scope2str(conn->set.scope, &conn->set.ldap_scope) < 0)
i_fatal("LDAP %s: Unknown scope option '%s'", config_path, conn->set.scope);
+ conn->event = event_create(auth_event);
+ event_set_append_log_prefix(conn->event, t_strdup_printf(
+ "ldap(%s): ", conn->config_path));
+
i_array_init(&conn->request_array, 512);
conn->request_queue = aqueue_init(&conn->request_array.arr);
array_free(&conn->request_array);
aqueue_deinit(&conn->request_queue);
+ event_unref(&conn->event);
pool_unref(&conn->pool);
}