Fixed non catched exception
parent
cee5a4cf4f
commit
9a25ee86e8
Binary file not shown.
|
|
@ -13,5 +13,10 @@ namespace Lobbies
|
|||
/// The ip address the connection succeeded on
|
||||
/// </summary>
|
||||
public IPAddress? IPAddress { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// If failed contains a error message reason
|
||||
/// </summary>
|
||||
public string? ErrorMessage { get; internal set; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -278,32 +278,41 @@ namespace Lobbies
|
|||
{
|
||||
return Task.Run(() =>
|
||||
{
|
||||
string? error = string.Empty;
|
||||
IPAddress? ret = null;
|
||||
using(var waitForIpEvent = new AutoResetEvent(false))
|
||||
using (var udpEchoClient = new UdpEchoServer())
|
||||
{
|
||||
udpEchoClient.Reached += (ep) =>
|
||||
try
|
||||
{
|
||||
using (var waitForIpEvent = new AutoResetEvent(false))
|
||||
using (var udpEchoClient = new UdpEchoServer())
|
||||
{
|
||||
ret = ep.Address;
|
||||
try
|
||||
udpEchoClient.Reached += (ep) =>
|
||||
{
|
||||
waitForIpEvent.Set();
|
||||
udpEchoClient.Stop();
|
||||
ret = ep.Address;
|
||||
try
|
||||
{
|
||||
waitForIpEvent.Set();
|
||||
udpEchoClient.Stop();
|
||||
}
|
||||
catch { }
|
||||
};
|
||||
|
||||
udpEchoClient.Start(0);
|
||||
|
||||
foreach (var ip in ipAddressesToTry)
|
||||
{
|
||||
udpEchoClient.CheckConnectionPossible(new IPEndPoint(ip, tryPort));
|
||||
}
|
||||
catch { }
|
||||
};
|
||||
|
||||
udpEchoClient.Start(0);
|
||||
|
||||
foreach (var ip in ipAddressesToTry)
|
||||
{
|
||||
udpEchoClient.CheckConnectionPossible(new IPEndPoint(ip, tryPort));
|
||||
if(!waitForIpEvent.WaitOne(500))
|
||||
error = $"Timeout";
|
||||
}
|
||||
|
||||
waitForIpEvent.WaitOne(500);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
error = $"Exception: {ex}";
|
||||
}
|
||||
|
||||
events.Enqueue(new LobbyClientEvent { EventType = LobbyClientEventTypes.DirectConnectionTestComplete, EventData = new DirectConnectionTestResult { DirectConnectionPossible = ret != null, IPAddress = ret } });
|
||||
events.Enqueue(new LobbyClientEvent { EventType = LobbyClientEventTypes.DirectConnectionTestComplete, EventData = new DirectConnectionTestResult { DirectConnectionPossible = ret != null, IPAddress = ret, ErrorMessage = error } });
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue