i_stream_skip(client->input, i);
}
+ client->authenticating = TRUE;
/* get SASL-IR, if any */
if ((ret = client_auth_read_line(client)) <= 0)
return ret;
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;
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;
}