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);
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;
}
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, ...)
i_free(client->lhlo);
client->lhlo = i_strdup(str_c(domain));
+ client->state.name = "LHLO";
return 0;
}
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;
}
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;
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);