return TRUE;
}
+static bool args_parse_user(struct client *client, const char *arg)
+{
+ if (str_begins(arg, "user=")) {
+ i_free(client->virtual_user);
+ i_free_and_null(client->virtual_user_orig);
+ i_free_and_null(client->virtual_auth_user);
+ client->virtual_user = i_strdup(arg + 5);
+ } else if (str_begins(arg, "original_user=")) {
+ i_free(client->virtual_user_orig);
+ client->virtual_user_orig = i_strdup(arg + 14);
+ } else if (str_begins(arg, "auth_user=")) {
+ i_free(client->virtual_auth_user);
+ client->virtual_auth_user = i_strdup(arg + 10);
+ } else {
+ return FALSE;
+ }
+ return TRUE;
+}
+
static void
authenticate_callback(struct auth_client_request *request,
enum auth_request_status status, const char *data_base64,
nologin = FALSE;
for (i = 0; args[i] != NULL; i++) {
- if (str_begins(args[i], "user=")) {
- i_free(client->virtual_user);
- i_free_and_null(client->virtual_user_orig);
- i_free_and_null(client->virtual_auth_user);
- client->virtual_user = i_strdup(args[i] + 5);
- } else if (str_begins(args[i], "original_user=")) {
- i_free(client->virtual_user_orig);
- client->virtual_user_orig = i_strdup(args[i] + 14);
- } else if (str_begins(args[i], "auth_user=")) {
- i_free(client->virtual_auth_user);
- client->virtual_auth_user =
- i_strdup(args[i] + 10);
- } else if (str_begins(args[i], "postlogin_socket=")) {
+ if (args_parse_user(client, args[i]))
+ ;
+ else if (str_begins(args[i], "postlogin_socket=")) {
client->postlogin_socket_path =
p_strdup(client->pool, args[i] + 17);
} else if (strcmp(args[i], "nologin") == 0 ||
if (args != NULL) {
/* parse our username if it's there */
- for (i = 0; args[i] != NULL; i++) {
- if (str_begins(args[i], "user=")) {
- i_free(client->virtual_user);
- i_free_and_null(client->virtual_user_orig);
- i_free_and_null(client->virtual_auth_user);
- client->virtual_user =
- i_strdup(args[i] + 5);
- } else if (str_begins(args[i], "original_user=")) {
- i_free(client->virtual_user_orig);
- client->virtual_user_orig =
- i_strdup(args[i] + 14);
- } else if (str_begins(args[i], "auth_user=")) {
- i_free(client->virtual_auth_user);
- client->virtual_auth_user =
- i_strdup(args[i] + 10);
- }
- }
+ for (i = 0; args[i] != NULL; i++)
+ (void)args_parse_user(client, args[i]);
}
client->authenticating = FALSE;