mirror of
https://github.com/Sarsoo/Spotify.NET.git
synced 2024-12-24 15:06:26 +00:00
Cleaning up after timeout
Proper Re-Use is now possible
This commit is contained in:
parent
f0290fa037
commit
234a522f8f
@ -44,6 +44,8 @@ namespace SpotifyAPI.Web.Auth
|
||||
authenticationWaitFlag.Set();
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
authentication.StartHttpServer(m_ListeningPort);
|
||||
|
||||
authentication.DoAuth();
|
||||
@ -51,8 +53,11 @@ namespace SpotifyAPI.Web.Auth
|
||||
authenticationWaitFlag.WaitOne(m_Timeout);
|
||||
if (spotifyWebApi == null)
|
||||
throw new TimeoutException($"No valid response received for the last {m_Timeout.TotalSeconds} seconds");
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
authentication.StopHttpServer();
|
||||
}
|
||||
|
||||
return Task.FromResult(spotifyWebApi);
|
||||
}
|
||||
|
@ -87,7 +87,6 @@ namespace SpotifyAPI.Web
|
||||
OutputStream.Flush();
|
||||
_inputStream = null;
|
||||
OutputStream = null;
|
||||
socket.Close();
|
||||
}
|
||||
|
||||
public void ParseRequest()
|
||||
@ -219,27 +218,9 @@ namespace SpotifyAPI.Web
|
||||
_listener = new TcpListener(IPAddress.Any, Port);
|
||||
_listener.Start();
|
||||
|
||||
using (HttpProcessor processor = new HttpProcessor(this))
|
||||
{
|
||||
while (IsActive)
|
||||
{
|
||||
_listener.BeginAcceptTcpClient(ar =>
|
||||
{
|
||||
try
|
||||
{
|
||||
TcpListener listener = (TcpListener)ar.AsyncState;
|
||||
var tcpCLient = listener.EndAcceptTcpClient(ar);
|
||||
processor.Process(tcpCLient);
|
||||
_listener.BeginAcceptTcpClient(AcceptTcpConnection, _listener);
|
||||
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
// Ignore
|
||||
}
|
||||
}, _listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (SocketException e)
|
||||
{
|
||||
if (e.ErrorCode != 10004) //Ignore 10004, which is thrown when the thread gets terminated
|
||||
@ -247,6 +228,28 @@ namespace SpotifyAPI.Web
|
||||
}
|
||||
}
|
||||
|
||||
private void AcceptTcpConnection(IAsyncResult ar)
|
||||
{
|
||||
TcpListener listener = (TcpListener)ar.AsyncState;
|
||||
try
|
||||
{
|
||||
var tcpCLient = listener.EndAcceptTcpClient(ar);
|
||||
using (HttpProcessor processor = new HttpProcessor(this))
|
||||
{
|
||||
processor.Process(tcpCLient);
|
||||
}
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
// Ignore
|
||||
}
|
||||
|
||||
if (!IsActive)
|
||||
return;
|
||||
//listener.Start();
|
||||
listener.BeginAcceptTcpClient(AcceptTcpConnection, listener);
|
||||
}
|
||||
|
||||
public abstract void HandleGetRequest(HttpProcessor p);
|
||||
|
||||
public abstract void HandlePostRequest(HttpProcessor p, StreamReader inputData);
|
||||
|
Loading…
Reference in New Issue
Block a user