Skip to content

Commit 0354a8d

Browse files
committed
Fixed list response
1 parent 2f6c1ca commit 0354a8d

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

src/FubarDev.FtpServer.Abstractions/FtpResponseList{TStatus}.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ public async Task<FtpResponseLine> GetNextLineAsync(object token, CancellationTo
122122

123123
case FtpResponseListStatus.Finished:
124124
resultLine = null;
125+
statusStore = null;
125126
break;
126127

127128
default:

src/FubarDev.FtpServer/FtpConnection.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,23 @@ public async Task WriteAsync(IFtpResponse response, CancellationToken cancellati
193193
Log?.Log(response);
194194
var socketStream = Features.Get<ISecureConnectionFeature>().SocketStream;
195195
var encoding = Features.Get<IEncodingFeature>().Encoding;
196-
var data = encoding.GetBytes($"{response}\r\n");
197-
await socketStream.WriteAsync(data, 0, data.Length, cancellationToken).ConfigureAwait(false);
196+
197+
FtpResponseLine line;
198+
object token = null;
199+
do
200+
{
201+
line = await response.GetNextLineAsync(token, cancellationToken)
202+
.ConfigureAwait(false);
203+
if (line.HasText)
204+
{
205+
var data = encoding.GetBytes($"{line.Text}\r\n");
206+
await socketStream.WriteAsync(data, 0, data.Length, cancellationToken).ConfigureAwait(false);
207+
}
208+
209+
token = line.Token;
210+
}
211+
while (token != null);
212+
198213
if (response.AfterWriteAction != null)
199214
{
200215
await response.AfterWriteAction(this, cancellationToken).ConfigureAwait(false);

0 commit comments

Comments
 (0)