diff --git a/build/Version.props b/build/Version.props index f859f3720cb..d6c8e492e34 100644 --- a/build/Version.props +++ b/build/Version.props @@ -3,7 +3,7 @@ - 4.15.2 + 4.15.3 4.0.0 9.3.0 9.3.0 diff --git a/src/Tgstation.Server.Host/Components/Chat/ChatManager.cs b/src/Tgstation.Server.Host/Components/Chat/ChatManager.cs index 3e2851e5c40..b5f105ea3e1 100644 --- a/src/Tgstation.Server.Host/Components/Chat/ChatManager.cs +++ b/src/Tgstation.Server.Host/Components/Chat/ChatManager.cs @@ -593,16 +593,20 @@ async Task ProcessMessage(IProvider provider, Message message, CancellationToken } // map the channel if it's private and we haven't seen it + var providerChannelId = message.User.Channel.RealId; KeyValuePair? mappedChannel; long providerId; lock (providers) { + // important, otherwise we could end up processing during shutdown + cancellationToken.ThrowIfCancellationRequested(); + providerId = providers .Where(x => x.Value == provider) .Select(x => x.Key) .First(); mappedChannel = mappedChannels - .Where(x => x.Value.ProviderId == providerId && x.Value.ProviderChannelId == message.User.Channel.RealId) + .Where(x => x.Value.ProviderId == providerId && x.Value.ProviderChannelId == providerChannelId) .FirstOrDefault(); } @@ -648,7 +652,8 @@ await SendMessage( return; } - var mapping = mappedChannel.Value.Value; + var mappingNonNullableKvp = mappedChannel.Value; + var mapping = mappingNonNullableKvp.Value; message.User.Channel.Id = mapping.Channel.Id; message.User.Channel.Tag = mapping.Channel.Tag; diff --git a/src/Tgstation.Server.Host/Components/Repository/Repository.cs b/src/Tgstation.Server.Host/Components/Repository/Repository.cs index 55603a08d44..0ebddb26409 100644 --- a/src/Tgstation.Server.Host/Components/Repository/Repository.cs +++ b/src/Tgstation.Server.Host/Components/Repository/Repository.cs @@ -1020,7 +1020,7 @@ await Task.WhenAll( CheckoutProgressHandler CheckoutProgressHandler(JobProgressReporter progressReporter, string stage) => (a, completedSteps, totalSteps) => { int? percentage; - if (totalSteps > completedSteps || totalSteps == 0) + if (totalSteps < completedSteps || totalSteps == 0) percentage = null; else { @@ -1053,7 +1053,7 @@ TransferProgressHandler TransferProgressHandler(JobProgressReporter progressRepo float? percentage; var totalObjectsToProcess = transferProgress.TotalObjects * 2; var processedObjects = transferProgress.IndexedObjects + transferProgress.ReceivedObjects; - if (totalObjectsToProcess > processedObjects || totalObjectsToProcess == 0) + if (totalObjectsToProcess < processedObjects || totalObjectsToProcess == 0) percentage = null; else {