Add new server option to disable/enable persistent sessions.

This commit is contained in:
Christian
2018-05-15 22:04:05 +02:00
parent 3e6edb92c5
commit 719838de3b
4 changed files with 30 additions and 1 deletions
@@ -107,6 +107,11 @@ namespace MQTTnet.Server
_logger.Error(exception, exception.Message);
}
if (!_options.EnablePersistentSessions)
{
await DeleteSessionAsync(clientId).ConfigureAwait(false);
}
Server.OnClientDisconnected(new ConnectedMqttClient
{
ClientId = clientId,
@@ -224,6 +229,20 @@ namespace MQTTnet.Server
return context.ReturnCode;
}
private async Task DeleteSessionAsync(string clientId)
{
await _sessionsLock.EnterAsync(CancellationToken.None);
try
{
_sessions.Remove(clientId);
_logger.Verbose("Session for client '{0}' deleted.", clientId);
}
finally
{
_sessionsLock.Exit();
}
}
private async Task<GetOrCreateClientSessionResult> PrepareClientSessionAsync(MqttConnectPacket connectPacket)
{
await _sessionsLock.EnterAsync(CancellationToken.None).ConfigureAwait(false);