client->last_input = ioloop_time;
timeout_reset(client->to_idle);
- client_log_start(client);
switch (i_stream_read(client->input)) {
case -1:
/* disconnected */
client_send_command_error(cmd, "Too long argument.");
cmd->param_error = TRUE;
client_command_free(&cmd);
- client_log_stop();
return;
}
client_destroy(client, NULL);
else
client_continue_pending_input(client);
- client_log_stop();
}
/* Returns -1 = error, 0 = need more data, 1 = successful. flags and
return;
}
- client_log_start(client);
while ((line = i_stream_next_line(client->input)) != NULL) {
if (client->input_skip_line)
client->input_skip_line = FALSE;
break;
}
}
- client_log_stop();
}
static void idle_client_input(struct cmd_idle_context *ctx)
ctx->sync_pending = TRUE;
else {
ctx->manual_cork = TRUE;
- client_log_start(client);
idle_sync_now(box, ctx);
if (client->disconnected)
client_destroy(client, NULL);
- client_log_stop();
}
}
struct client *imap_clients = NULL;
unsigned int imap_client_count = 0;
-static struct mail_user *log_prefix_user = NULL;
-
static void client_idle_timeout(struct client *client)
{
if (client->output_lock == NULL)
if (hook_client_created != NULL)
hook_client_created(&client);
- log_prefix_user = client->user;
imap_refresh_proctitle();
return client;
}
}
}
-void client_log_start(struct client *client)
-{
- /* FIXME: This is kind of ugly way to do it here manually. Would be
- better if this was integrated to ioloop, so that all io/timeout
- callbacks could set the prefixes automatically */
- if (log_prefix_user != NULL &&
- log_prefix_user == client->user)
- return;
-
- mail_user_set_log_prefix(client->user);
- log_prefix_user = client->user;
-}
-
-void client_log_stop(void)
-{
- if (imap_client_count == 1)
- client_log_start(imap_clients);
- else {
- master_service_init_log(master_service, "imap: ");
- log_prefix_user = NULL;
- }
-}
-
static const char *client_stats(struct client *client)
{
static struct var_expand_table static_tab[] = {
i_assert(!client->destroyed);
client->destroyed = TRUE;
- client_log_start(client);
if (!client->disconnected) {
client->disconnected = TRUE;
if (reason == NULL)
mail_storage_service_user_free(&client->service_user);
pool_unref(&client->pool);
- client_log_stop();
master_service_client_connection_destroyed(master_service);
imap_refresh_proctitle();
}
if (client->disconnected)
return;
- client_log_start(client);
i_info("Disconnected: %s %s", reason, client_stats(client));
client->disconnected = TRUE;
(void)o_stream_flush(client->output);
i_assert(client->io != NULL);
- client_log_start(client);
-
client->last_input = ioloop_time;
timeout_reset(client->to_idle);
client_destroy(client, NULL);
else
client_continue_pending_input(client);
- client_log_stop();
}
static void client_output_cmd(struct client_command_context *cmd)
i_assert(!client->destroyed);
- client_log_start(client);
client->last_output = ioloop_time;
timeout_reset(client->to_idle);
if (client->to_idle_output != NULL)
client_destroy(client, NULL);
else
client_continue_pending_input(client);
- client_log_stop();
return ret;
}
bool client_handle_input(struct client *client);
int client_output(struct client *client);
-void client_log_start(struct client *client);
-void client_log_stop(void);
-
void clients_destroy_all(void);
#endif
struct client *client = cmd->client;
bool finished;
- client_log_start(client);
o_stream_cork(client->output);
finished = cmd_search_more(cmd);
o_stream_uncork(client->output);
client_destroy(client, NULL);
else
client_continue_pending_input(client);
- client_log_stop();
}
int cmd_search_parse_return_if_found(struct imap_search_context *ctx,
struct client *pop3_clients;
unsigned int pop3_client_count;
-static struct mail_user *log_prefix_user = NULL;
-
static void client_input(struct client *client);
static int client_output(struct client *client);
-static void client_log_start(struct client *client)
-{
- /* FIXME: This is kind of ugly way to do it here manually. Would be
- better if this was integrated to ioloop, so that all io/timeout
- callbacks could set the prefixes automatically */
- if (log_prefix_user != NULL &&
- log_prefix_user == client->user)
- return;
-
- mail_user_set_log_prefix(client->user);
- log_prefix_user = client->user;
-}
-
-static void client_log_stop(void)
-{
- if (pop3_client_count == 1)
- client_log_start(pop3_clients);
- else {
- master_service_init_log(master_service, "pop3: ");
- log_prefix_user = NULL;
- }
-}
-
static void client_commit_timeout(struct client *client)
{
if (client->cmd != NULL) {
if (hook_client_created != NULL)
hook_client_created(&client);
- log_prefix_user = client->user;
pop3_refresh_proctitle();
return client;
}
if (client->seen_change_count > 0)
client_update_mails(client);
- client_log_start(client);
if (!client->disconnected) {
if (reason == NULL)
reason = client_get_disconnect_reason(client);
mail_storage_service_user_free(&client->service_user);
i_free(client);
- client_log_stop();
master_service_client_connection_destroyed(master_service);
pop3_refresh_proctitle();
}
if (client->to_commit != NULL)
timeout_reset(client->to_commit);
- client_log_start(client);
switch (i_stream_read(client->input)) {
case -1:
/* disconnected */
}
(void)client_handle_input(client);
- client_log_stop();
}
static int client_output(struct client *client)
{
- client_log_start(client);
o_stream_cork(client->output);
if (o_stream_flush(client->output) < 0) {
client_destroy(client, NULL);
if (client->cmd != NULL)
client->cmd(client);
- client_log_stop();
if (client->cmd == NULL) {
if (o_stream_get_buffer_used_size(client->output) <