Add timeout

Waiting client can't hang now
This commit is contained in:
2019-07-18 13:01:55 +02:00
parent 8ce87a3cfc
commit a2f867480a

View File

@@ -8,6 +8,8 @@ namespace DearFTP.Connection
{ {
class DataConnection class DataConnection
{ {
public const int Timeout = 10_000;
public TcpListener Listener { get; private set; } public TcpListener Listener { get; private set; }
public TcpClient Client { get; private set; } public TcpClient Client { get; private set; }
public NetworkStream Stream { get; private set; } public NetworkStream Stream { get; private set; }
@@ -29,15 +31,19 @@ namespace DearFTP.Connection
Listener = new TcpListener(IPAddress.Any, 0); Listener = new TcpListener(IPAddress.Any, 0);
Listener.Start(); Listener.Start();
} }
public void AcceptClient() public void AcceptClient()
{ {
Client = Listener.AcceptTcpClient(); var task = Listener.AcceptTcpClientAsync();
Stream = Client.GetStream();
IsAvailable = true; if (task.Wait(Timeout))
{
Client = task.Result;
Stream = Client.GetStream();
IsAvailable = true;
}
} }
public async void AcceptClientAsync() public async void AcceptClientAsync()
{ {