]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lmtp: Log the current state in disconnect message.
authorTimo Sirainen <tss@iki.fi>
Thu, 30 Jun 2011 05:27:32 +0000 (08:27 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 30 Jun 2011 05:27:32 +0000 (08:27 +0300)
src/lmtp/client.c
src/lmtp/client.h
src/lmtp/commands.c

index 2deb2016350a29692fa7284cfba1fabd5efb70d9..6b6be909468adea0d54137e0611f30202f65d56b 100644 (file)
@@ -226,6 +226,7 @@ struct client *client_create(int fd_in, int fd_out,
        client_io_reset(client);
        client->state_pool = pool_alloconly_create("client state", 4096);
        client->state.mail_data_fd = -1;
+       client->state.name = "banner";
        client_read_settings(client);
        client_raw_user_create(client);
        client_generate_session_id(client);
@@ -290,7 +291,8 @@ void client_disconnect(struct client *client, const char *prefix,
                client_send_line(client, "%s %s", prefix, reason);
        else
                reason = client_get_disconnect_reason(client);
-       i_info("Disconnect from %s: %s", client_remote_id(client), reason);
+       i_info("Disconnect from %s: %s (in %s)", client_remote_id(client),
+              reason, client->state.name);
 
        client->disconnected = TRUE;
 }
@@ -325,6 +327,7 @@ void client_state_reset(struct client *client)
        client->state.mail_data_fd = -1;
 
        client_generate_session_id(client);
+       client->state.name = "reset";
 }
 
 void client_send_line(struct client *client, const char *fmt, ...)
index dc24015968cbecc4db65520e2c9af26c9f69daf0..a4e429e08d09e8312957aed0ec79ecea4ae1818f 100644 (file)
@@ -12,6 +12,7 @@ struct mail_recipient {
 };
 
 struct client_state {
+       const char *name;
        const char *session_id;
        const char *mail_from;
        ARRAY_DEFINE(rcpt_to, struct mail_recipient);
index 4ed20e1a3e4bc0c7ecc7df9ea41f7b1140a3a38d..08f41d4436d7e34f58d5c4ecfe6d44ed55f9b4ff 100644 (file)
@@ -73,6 +73,7 @@ int cmd_lhlo(struct client *client, const char *args)
 
        i_free(client->lhlo);
        client->lhlo = i_strdup(str_c(domain));
+       client->state.name = "LHLO";
        return 0;
 }
 
@@ -141,6 +142,7 @@ int cmd_mail(struct client *client, const char *args)
        client->state.mail_from = p_strdup(client->state_pool, addr);
        p_array_init(&client->state.rcpt_to, client->state_pool, 64);
        client_send_line(client, "250 2.1.0 OK");
+       client->state.name = "MAIL FROM";
        return 0;
 }
 
@@ -385,6 +387,8 @@ int cmd_rcpt(struct client *client, const char *args)
        const char *error = NULL;
        int ret = 0;
 
+       client->state.name = "RCPT TO";
+
        if (client->state.mail_from == NULL) {
                client_send_line(client, "503 5.5.1 MAIL needed first");
                return 0;
@@ -897,12 +901,14 @@ int cmd_data(struct client *client, const char *args ATTR_UNUSED)
 
        io_remove(&client->io);
        if (array_count(&client->state.rcpt_to) == 0) {
+               client->state.name = "DATA (proxy)";
                timeout_remove(&client->to_idle);
                lmtp_proxy_start(client->proxy, client->dot_input,
                                 client->state.added_headers,
                                 client_proxy_finish, client);
                i_stream_unref(&client->dot_input);
        } else {
+               client->state.name = "DATA";
                client->io = io_add(client->fd_in, IO_READ,
                                    client_input_data, client);
                client_input_data_handle(client);