]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-auth-client: auth-master - Split off auth_master_user_lookup_start() from auth_ma...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 18 May 2020 23:52:34 +0000 (01:52 +0200)
committerStephan Bosch <stephan.bosch@open-xchange.com>
Wed, 27 Aug 2025 14:17:02 +0000 (16:17 +0200)
src/lib-auth-client/auth-master.c

index 3d729fed43528f73d64c1943a737112abd8325d9..a2ace1e4cdf1b560e9756e82b4030bd9a13399d6 100644 (file)
@@ -1070,6 +1070,11 @@ static void
 auth_master_user_lookup_finished(struct auth_master_lookup *_lookup,
                                 int result, const char *const *fields,
                                 struct auth_master_user_lookup_ctx *ctx);
+struct auth_master_request *
+auth_master_user_lookup_start(struct auth_master_lookup *lookup,
+                             struct auth_master_connection *conn,
+                             const char *user,
+                             const struct auth_user_info *info);
 
 static void
 auth_master_user_lookup_callback(struct auth_master_user_lookup_ctx *ctx,
@@ -1088,7 +1093,6 @@ int auth_master_user_lookup(struct auth_master_connection *conn,
 {
        struct auth_master_lookup lookup;
        struct auth_master_request *req;
-       string_t *args;
 
        if (!is_valid_string(user) || !is_valid_string(info->protocol)) {
                /* non-allowed characters, the user can't exist */
@@ -1107,29 +1111,9 @@ int auth_master_user_lookup(struct auth_master_connection *conn,
        };
 
        i_zero(&lookup);
-       lookup.conn = conn;
-       lookup.return_value = -1;
        lookup.pool = pool;
-       lookup.expected_reply = "USER";
-       lookup.user = user;
-
-       args = t_str_new(128);
-       str_append(args, user);
-       auth_user_info_export(args, info);
-
-       lookup.event = auth_master_user_event_create(
-               conn, t_strdup_printf("userdb lookup(%s): ", user), info);
-       event_add_str(lookup.event, "user", user);
 
-       struct event_passthrough *e =
-               event_create_passthrough(lookup.event)->
-               set_name("auth_client_userdb_lookup_started");
-       e_debug(e->event(), "Started userdb lookup");
-
-       req = auth_master_request(conn, "USER", str_data(args), str_len(args),
-                                 auth_lookup_reply_callback, &lookup);
-
-       auth_master_request_set_event(req, lookup.event);
+       req = auth_master_user_lookup_start(&lookup, conn, user, info);
        (void)auth_master_request_wait(req);
 
        auth_master_user_lookup_finished(&lookup, lookup.return_value,
@@ -1181,6 +1165,41 @@ auth_master_user_lookup_finished(struct auth_master_lookup *_lookup,
        auth_master_user_lookup_callback(ctx, result, username, fields);
 }
 
+struct auth_master_request *
+auth_master_user_lookup_start(struct auth_master_lookup *lookup,
+                             struct auth_master_connection *conn,
+                             const char *user,
+                             const struct auth_user_info *info)
+{
+       struct auth_master_request *req;
+       string_t *args;
+
+       lookup->conn = conn;
+       lookup->return_value = -1;
+       lookup->expected_reply = "USER";
+       lookup->user = user;
+
+       args = t_str_new(128);
+       str_append(args, user);
+       auth_user_info_export(args, info);
+
+       lookup->event = auth_master_user_event_create(
+               conn, t_strdup_printf("userdb lookup(%s): ", user), info);
+       event_add_str(lookup->event, "user", user);
+
+       struct event_passthrough *e =
+               event_create_passthrough(lookup->event)->
+               set_name("auth_client_userdb_lookup_started");
+       e_debug(e->event(), "Started userdb lookup");
+
+       req = auth_master_request(conn, "USER", str_data(args), str_len(args),
+                                 auth_lookup_reply_callback, lookup);
+
+       auth_master_request_set_event(req, lookup->event);
+
+       return req;
+}
+
 int auth_user_fields_parse(const char *const *fields, pool_t pool,
                           struct auth_user_reply *reply_r, const char **error_r)
 {