It is no longer needed for testing, as async requests can be used instead.
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");
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);
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)
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);
}
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
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)
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");
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,
};
/*