]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-auth-client: auth-master - Drop AUTH_MASTER_FLAG_NO_INNER_IOLOOP flag
authorStephan Bosch <stephan.bosch@open-xchange.com>
Sun, 2 Mar 2025 18:32:53 +0000 (19:32 +0100)
committerStephan Bosch <stephan.bosch@open-xchange.com>
Wed, 27 Aug 2025 14:17:02 +0000 (16:17 +0200)
It is no longer needed for testing, as async requests can be used instead.

src/auth/test-auth-master.c
src/lib-auth-client/auth-master-request.c
src/lib-auth-client/auth-master.c
src/lib-auth-client/auth-master.h

index f0440cf137f570b1d16db25622709efc011bb638..1911520dd98d341106fb7a20817115f405aa2630 100644 (file)
@@ -16,6 +16,25 @@ static void auth_master_connected(int *server_fd)
        auth_master_server_connected(server_fd, TEST_AUTH_MASTER_SOCKET);
 }
 
+static void
+test_client_passdb_lookup_callback(void *context ATTR_UNUSED,
+                                  int result, const char *const *fields)
+{
+       test_assert_cmp(result, ==, 1);
+       test_assert_strcmp(fields[0], "user=testuser");
+       io_loop_stop(current_ioloop);
+}
+
+static void
+test_client_userdb_lookup_callback(void *context ATTR_UNUSED,
+                                  int result, const char *username,
+                                  const char *const *fields ATTR_UNUSED)
+{
+       test_assert_cmp(result, ==, 1);
+       test_assert_strcmp(username, "testuser");
+       io_loop_stop(current_ioloop);
+}
+
 static void test_auth_master(void)
 {
        test_begin("auth master");
@@ -28,23 +47,22 @@ static void test_auth_master(void)
 
        struct auth_master_connection *client =
                auth_master_init(TEST_AUTH_MASTER_SOCKET,
-                                AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT |
-                                AUTH_MASTER_FLAG_NO_INNER_IOLOOP);
+                                AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT);
 
        pool_t pool = pool_alloconly_create("test pool", 128);
        struct auth_user_info info = {
                .session_id = "1",
                .protocol = "default",
        };
-       const char *const *fields;
-       const char *username;
 
-       int ret = auth_master_pass_lookup(client, "testuser", &info, pool, &fields);
-       test_assert_cmp(ret, ==, 1);
-       test_assert_strcmp(fields[0], "user=testuser");
-       ret = auth_master_user_lookup(client, "testuser", &info, pool, &username, &fields);
-       test_assert_cmp(ret, ==, 1);
-       test_assert_strcmp(username, "testuser");
+       (void)auth_master_pass_lookup_async(
+               client, "testuser", &info,
+               test_client_passdb_lookup_callback, NULL);
+       io_loop_run(current_ioloop);
+       (void)auth_master_user_lookup_async(
+               client, "testuser", &info,
+               test_client_userdb_lookup_callback, NULL);
+       io_loop_run(current_ioloop);
 
        pool_unref(&pool);
        auth_master_deinit(&client);
index 81e0b9713f62677476e1ade5974fe87014a2eab0..925e3c6a0b6c536895907768319563581fea1a08 100644 (file)
@@ -370,15 +370,11 @@ bool auth_master_request_wait(struct auth_master_request *req)
 
        e_debug(req->event, "Waiting for request to complete");
 
-       if ((conn->flags & AUTH_MASTER_FLAG_NO_INNER_IOLOOP) != 0)
-               ioloop = conn->ioloop;
-       else {
-               prev_ioloop = conn->ioloop;
-               if (!waiting)
-                       conn->prev_ioloop = prev_ioloop;
-               ioloop = io_loop_create();
-               auth_master_switch_ioloop_to(conn, ioloop);
-       }
+       prev_ioloop = conn->ioloop;
+       if (!waiting)
+               conn->prev_ioloop = prev_ioloop;
+       ioloop = io_loop_create();
+       auth_master_switch_ioloop_to(conn, ioloop);
 
        if (conn->conn.input != NULL &&
            i_stream_get_data_size(conn->conn.input) > 0)
@@ -418,12 +414,10 @@ bool auth_master_request_wait(struct auth_master_request *req)
        last_state = req->state;
        freed = !auth_master_request_unref(&req);
 
-       if ((conn->flags & AUTH_MASTER_FLAG_NO_INNER_IOLOOP) == 0) {
-               auth_master_switch_ioloop_to(conn, prev_ioloop);
-               io_loop_destroy(&ioloop);
-               if (!waiting)
-                       conn->prev_ioloop = NULL;
-       }
+       auth_master_switch_ioloop_to(conn, prev_ioloop);
+       io_loop_destroy(&ioloop);
+       if (!waiting)
+               conn->prev_ioloop = NULL;
 
        return (freed || last_state >= AUTH_MASTER_REQUEST_STATE_FINISHED);
 }
index 1e0ae62e8fc4e0a971ea3552380d490b88952ba3..9960eb9813d2fc94f286b8ca8f40fe2a3a748c78 100644 (file)
@@ -81,9 +81,6 @@ auth_master_init(const char *auth_socket_path, enum auth_master_flags flags)
                                    conn->auth_socket_path);
        event_unref(&event_parent);
 
-       if ((flags & AUTH_MASTER_FLAG_NO_INNER_IOLOOP) != 0)
-               conn->ioloop = current_ioloop;
-
        hash_table_create_direct(&conn->requests, pool, 0);
 
        /* Try to use auth request ID numbers from wider range to ease
@@ -624,15 +621,11 @@ void auth_master_wait(struct auth_master_connection *conn)
 
        e_debug(conn->conn.event, "Waiting for all requests to complete");
 
-       if ((conn->flags & AUTH_MASTER_FLAG_NO_INNER_IOLOOP) != 0)
-               ioloop = conn->ioloop;
-       else {
-               prev_ioloop = conn->ioloop;
-               if (!waiting)
-                       conn->prev_ioloop = prev_ioloop;
-               ioloop = io_loop_create();
-               auth_master_switch_ioloop_to(conn, ioloop);
-       }
+       prev_ioloop = conn->ioloop;
+       if (!waiting)
+               conn->prev_ioloop = prev_ioloop;
+       ioloop = io_loop_create();
+       auth_master_switch_ioloop_to(conn, ioloop);
 
        if (conn->conn.input != NULL &&
            i_stream_get_data_size(conn->conn.input) > 0)
@@ -661,12 +654,10 @@ void auth_master_wait(struct auth_master_connection *conn)
        if (conn->conn.output != NULL && was_corked)
                o_stream_cork(conn->conn.output);
 
-       if ((conn->flags & AUTH_MASTER_FLAG_NO_INNER_IOLOOP) == 0) {
-               auth_master_switch_ioloop_to(conn, prev_ioloop);
-               io_loop_destroy(&ioloop);
-               if (!waiting)
-                       conn->prev_ioloop = NULL;
-       }
+       auth_master_switch_ioloop_to(conn, prev_ioloop);
+       io_loop_destroy(&ioloop);
+       if (!waiting)
+               conn->prev_ioloop = NULL;
 
        e_debug(conn->conn.event, "Finished waiting for requests");
 
index 1e82cc7c83119cca0c717b930c8a0377a0684bd2..fa8447749b32451605b20fff99222fd8d792cff7 100644 (file)
@@ -13,8 +13,6 @@ enum auth_master_flags {
        AUTH_MASTER_FLAG_DEBUG                  = 0x01,
        /* Don't disconnect from auth socket when idling */
        AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT        = 0x02,
-       /* No inner ioloop (testing only) */
-       AUTH_MASTER_FLAG_NO_INNER_IOLOOP        = 0x04,
 };
 
 /*