]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
auth: db-ldap - Use event based logging
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 31 Oct 2019 12:34:48 +0000 (14:34 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 12 Mar 2021 12:18:13 +0000 (12:18 +0000)
src/auth/db-ldap.c
src/auth/db-ldap.h

index 60a3af48973219c6a2d2738bb78380fd98de2001..226ab057b3bf53e3c19ea8736ea40c481f773352 100644 (file)
@@ -226,7 +226,7 @@ static int ldap_get_errno(struct ldap_connection *conn)
 
        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;
        }
@@ -463,13 +463,13 @@ void db_ldap_request(struct ldap_connection *conn,
 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;
@@ -768,7 +768,7 @@ db_ldap_handle_request_result(struct ldap_connection *conn,
                        /* 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;
                }
@@ -899,7 +899,7 @@ db_ldap_handle_result(struct ldap_connection *conn, struct db_ldap_result *res)
 
        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 */
@@ -952,11 +952,11 @@ static void ldap_input(struct ldap_connection *conn)
                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
@@ -1006,8 +1006,7 @@ static void ldap_connection_timeout(struct ldap_connection *conn)
 {
        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);
 }
 
@@ -1178,6 +1177,7 @@ static void db_ldap_set_options(struct ldap_connection *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
 
@@ -1214,20 +1214,13 @@ static void db_ldap_init_ld(struct ldap_connection *conn)
 
 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) {
@@ -1247,8 +1240,8 @@ int db_ldap_connect(struct ldap_connection *conn)
                                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
@@ -1259,11 +1252,9 @@ int db_ldap_connect(struct ldap_connection *conn)
        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);
@@ -1438,7 +1429,7 @@ void db_ldap_set_attrs(struct ldap_connection *conn, const char *attrlist,
                }
 
                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] == '@') {
@@ -1956,6 +1947,10 @@ struct ldap_connection *db_ldap_init(const char *config_path, bool userdb)
        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);
 
@@ -1991,6 +1986,7 @@ void db_ldap_unref(struct ldap_connection **_conn)
        array_free(&conn->request_array);
        aqueue_deinit(&conn->request_queue);
 
+       event_unref(&conn->event);
        pool_unref(&conn->pool);
 }
 
index ca40a9656ddacba695b141dc6b9d6a7b59f6f547..e69d716e64bb3101de6442563f0242acb59f4eae 100644 (file)
@@ -155,6 +155,7 @@ struct ldap_connection {
 
        pool_t pool;
        int refcount;
+       struct event *event;
 
        char *config_path;
         struct ldap_settings set;