Add timeout
Waiting client can't hang now
This commit is contained in:
@@ -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()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user