Fix catching listener exceptions

This commit is contained in:
Frank A. Krueger 2017-07-07 22:54:43 -07:00
parent c9f11aa285
commit 0d1d5c6490
1 changed files with 11 additions and 4 deletions

View File

@ -177,6 +177,7 @@ namespace Ooui
static async Task RunAsync (string listenerPrefix, CancellationToken token)
{
HttpListener listener = null;
var wait = 5;
started.Reset ();
while (!started.WaitOne(0) && !token.IsCancellationRequested) {
@ -186,12 +187,18 @@ namespace Ooui
listener.Start ();
started.Set ();
}
catch (System.Net.Sockets.SocketException ex) when
(ex.SocketErrorCode == System.Net.Sockets.SocketError.AddressAlreadyInUse) {
var wait = 5;
Console.WriteLine ($"{listenerPrefix} is in use, trying again in {wait} seconds...");
catch (System.Net.Sockets.SocketException ex) {
Console.WriteLine ($"{listenerPrefix} error: {ex.Message}. Trying again in {wait} seconds...");
await Task.Delay (wait * 1000).ConfigureAwait (false);
}
catch (System.Net.HttpListenerException ex) {
Console.WriteLine ($"{listenerPrefix} error: {ex.Message}. Trying again in {wait} seconds...");
await Task.Delay (wait * 1000).ConfigureAwait (false);
}
catch (Exception ex) {
Error ("Error listening", ex);
return;
}
}
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine ($"Listening at {listenerPrefix}...");