public override async ValueTask HandleDisconnectAsync(string reason)
{
- await _recorder.WriteDisconnectAsync(this);
+ await _recorder.WriteDisconnectAsync(this, reason);
await base.HandleDisconnectAsync(reason);
}
}
-}
\ No newline at end of file
+}
}
}
- public async Task WriteDisconnectAsync(ClientRecorder client)
+ public async Task WriteDisconnectAsync(ClientRecorder client, string reason)
{
_logger.LogTrace("Writing Disconnect.");
{
WriteHeader(context, RecordedPacketType.Disconnect);
WriteClient(context, client, false);
+ context.Writer.Write(reason);
WriteLength(context);
await WriteAsync(context.Stream);
break;
case RecordedPacketType.Disconnect:
- await Connections[clientId].Client!.HandleDisconnectAsync(null);
+ string reason = null;
+
+ if (reader.BaseStream.Position < reader.BaseStream.Length)
+ {
+ reason = reader.ReadString();
+ }
+
+ await Connections[clientId].Client!.HandleDisconnectAsync(reason);
Connections.Remove(clientId);
break;