Mercurial > dovecot > core-2.2
changeset 2268:5bd7fa814d7f HEAD
If we're not connected to all auth sockets, wait before sending greeting so
APOP challenge gets sent.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 03 Jul 2004 12:44:21 +0300 |
parents | d2e186f716d8 |
children | 945403a685f9 |
files | src/pop3-login/client.c src/pop3-login/client.h |
diffstat | 2 files changed, 17 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/src/pop3-login/client.c Sat Jul 03 01:03:36 2004 +0300 +++ b/src/pop3-login/client.c Sat Jul 03 12:44:21 2004 +0300 @@ -163,13 +163,6 @@ if (!client_read(client)) return; - if (!auth_client_is_connected(auth_client)) { - /* we're not yet connected to auth process - - don't allow any commands */ - client->input_blocked = TRUE; - return; - } - client_ref(client); o_stream_cork(client->output); @@ -236,8 +229,6 @@ { struct auth_connect_id id; - /* FIXME: breaks if we're not connected! */ - if (!auth_client_reserve_connection(auth_client, "APOP", &id)) return NULL; @@ -245,6 +236,16 @@ dec2str(ioloop_time), my_hostname); } +static void client_auth_ready(struct pop3_client *client) +{ + client->common.io = + io_add(client->common.fd, IO_READ, client_input, client); + + client->apop_challenge = get_apop_challenge(); + client_send_line(client, t_strconcat("+OK " PACKAGE " ready.", + client->apop_challenge, NULL)); +} + struct client *client_create(int fd, int ssl, const struct ip_addr *local_ip, const struct ip_addr *ip) { @@ -274,7 +275,6 @@ client->common.local_ip = *local_ip; client->common.ip = *ip; client->common.fd = fd; - client->common.io = io_add(fd, IO_READ, client_input, client); client_open_streams(client, fd); client->last_input = ioloop_time; @@ -282,9 +282,9 @@ main_ref(); - client->apop_challenge = get_apop_challenge(); - client_send_line(client, t_strconcat("+OK " PACKAGE " ready.", - client->apop_challenge, NULL)); + client->auth_connected = auth_client_is_connected(auth_client); + if (client->auth_connected) + client_auth_ready(client); client_set_title(client); return &client->common; } @@ -396,9 +396,9 @@ while (hash_iterate(iter, &key, &value)) { struct pop3_client *client = key; - if (client->input_blocked) { - client->input_blocked = FALSE; - client_input(client); + if (!client->auth_connected) { + client->auth_connected = TRUE; + client_auth_ready(client); } } hash_iterate_deinit(iter);