private async Task HandleData()
{
await SendLine("354 OK, send");
_connection.SetTimeout(_configuration.DataCommandTimeout);
using (var target = new MemoryStreamWithFileBacking(DataTransferMemoryBufferMaxSize, _configuration.TempDirectory))
{
var transmissionBuffer = new TransmissionBuffer(target);
while (!transmissionBuffer.TransmissionEnded)
{
using (var maildata = await _connection.Read())
{
maildata.Seek(0, SeekOrigin.Begin);
transmissionBuffer.Append(maildata);
}
}
transmissionBuffer.Flush();
var commandResult = await _commandHandler.HandleData(target);
await SendCommandResult(commandResult);
_state.HasMailFrom = false;
_state.HasRcptTo = false;
}
}