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
{