From a2f867480a6b377092157e9370dfb930f1dd7299 Mon Sep 17 00:00:00 2001 From: Eveldee Date: Thu, 18 Jul 2019 13:01:55 +0200 Subject: [PATCH] Add timeout Waiting client can't hang now --- DearFTP/Connection/DataConnection.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/DearFTP/Connection/DataConnection.cs b/DearFTP/Connection/DataConnection.cs index 94d9fdb..b7bd6a8 100644 --- a/DearFTP/Connection/DataConnection.cs +++ b/DearFTP/Connection/DataConnection.cs @@ -8,6 +8,8 @@ namespace DearFTP.Connection { class DataConnection { + public const int Timeout = 10_000; + public TcpListener Listener { get; private set; } public TcpClient Client { get; private set; } public NetworkStream Stream { get; private set; } @@ -29,15 +31,19 @@ namespace DearFTP.Connection Listener = new TcpListener(IPAddress.Any, 0); Listener.Start(); - } public void AcceptClient() { - Client = Listener.AcceptTcpClient(); - Stream = Client.GetStream(); + var task = Listener.AcceptTcpClientAsync(); - IsAvailable = true; + if (task.Wait(Timeout)) + { + Client = task.Result; + Stream = Client.GetStream(); + + IsAvailable = true; + } } public async void AcceptClientAsync() {