From: Aki Tuomi Date: Thu, 9 Jul 2020 06:38:37 +0000 (+0300) Subject: pop3-login: Use struct client authenticating member X-Git-Tag: 2.3.11.2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=624c0394f74e63a6e0c4e94f91b45d9b3f4fb54b;p=thirdparty%2Fdovecot%2Fcore.git pop3-login: Use struct client authenticating member This is what should be used instead of introducing our own. Broken in 6c55437036b3de11804eb68f66d84cb164c33d63 --- diff --git a/src/pop3-login/client-authenticate.c b/src/pop3-login/client-authenticate.c index be202f0332..e50e45c1d1 100644 --- a/src/pop3-login/client-authenticate.c +++ b/src/pop3-login/client-authenticate.c @@ -121,6 +121,7 @@ int cmd_auth(struct pop3_client *pop3_client, bool *parsed_r) i_stream_skip(client->input, i); } + client->authenticating = TRUE; /* get SASL-IR, if any */ if ((ret = client_auth_read_line(client)) <= 0) return ret; diff --git a/src/pop3-login/client.c b/src/pop3-login/client.c index a17bdb2e77..082b5e389a 100644 --- a/src/pop3-login/client.c +++ b/src/pop3-login/client.c @@ -117,7 +117,16 @@ static bool client_command_execute(struct pop3_client *client, const char *cmd, static void pop3_client_input(struct client *client) { - i_assert(!client->authenticating); + if (client->authenticating) { + struct pop3_client *pop3_client = + container_of(client, struct pop3_client, common); + bool parsed; + cmd_auth(pop3_client, &parsed); + if (!parsed) + client->authenticating = FALSE; + else + return; + } if (!client_read(client)) return; @@ -169,16 +178,13 @@ static bool pop3_client_input_next_cmd(struct client *client) const char *cmd, *args; bool parsed; - if (!pop3_client->authenticating && !client_read_cmd_name(client, &cmd)) + if (!client_read_cmd_name(client, &cmd)) return FALSE; - if (pop3_client->authenticating || - strcmp(cmd, "AUTH") == 0) { - pop3_client->authenticating = TRUE; + if (strcmp(cmd, "AUTH") == 0) { int ret = cmd_auth(pop3_client, &parsed); if (ret == 0 || !parsed) return FALSE; - pop3_client->authenticating = !parsed; return parsed; } diff --git a/src/pop3-login/client.h b/src/pop3-login/client.h index 7a24f54fa1..f052623a9f 100644 --- a/src/pop3-login/client.h +++ b/src/pop3-login/client.h @@ -24,7 +24,6 @@ struct pop3_client { enum pop3_proxy_state proxy_state; bool proxy_xclient; bool auth_mech_name_parsed; - bool authenticating; }; enum pop3_cmd_reply {