diff --git a/.gitignore b/.gitignore index ce6fb8c..2365a4d 100644 --- a/.gitignore +++ b/.gitignore @@ -161,6 +161,9 @@ FodyWeavers.xsd ## Go reference implementation golang/ +## Git worktrees +.worktrees/ + ## OS .DS_Store Thumbs.db diff --git a/src/NATS.Server/NatsClient.cs b/src/NATS.Server/NatsClient.cs index df04363..149a399 100644 --- a/src/NATS.Server/NatsClient.cs +++ b/src/NATS.Server/NatsClient.cs @@ -356,14 +356,14 @@ public sealed class NatsClient : IDisposable continue; } - var currentPingsOut = Interlocked.Increment(ref _pingsOut); - if (currentPingsOut > _options.MaxPingsOut) + if (Volatile.Read(ref _pingsOut) + 1 > _options.MaxPingsOut) { _logger.LogDebug("Client {ClientId} stale connection — closing", Id); await SendErrAndCloseAsync(NatsProtocol.ErrStaleConnection); return; } + var currentPingsOut = Interlocked.Increment(ref _pingsOut); _logger.LogDebug("Client {ClientId} sending PING ({PingsOut}/{MaxPingsOut})", Id, currentPingsOut, _options.MaxPingsOut); try