diff --git a/MareSynchronos/WebAPI/Files/FileTransferOrchestrator.cs b/MareSynchronos/WebAPI/Files/FileTransferOrchestrator.cs index f1764c6..3282cd5 100644 --- a/MareSynchronos/WebAPI/Files/FileTransferOrchestrator.cs +++ b/MareSynchronos/WebAPI/Files/FileTransferOrchestrator.cs @@ -126,8 +126,17 @@ public class FileTransferOrchestrator : DisposableMediatorSubscriberBase MareConfiguration.Models.DownloadSpeeds.MBps => limit * 1024 * 1024, _ => limit, }; - var dividedLimit = limit / (CurrentlyUsedDownloadSlots == 0 ? 1 : CurrentlyUsedDownloadSlots); - return dividedLimit == 0 ? 1 : dividedLimit; + var currentUsedDlSlots = CurrentlyUsedDownloadSlots; + var avaialble = _availableDownloadSlots; + var currentCount = _downloadSemaphore.CurrentCount; + var dividedLimit = limit / (currentUsedDlSlots == 0 ? 1 : currentUsedDlSlots); + if (dividedLimit < 0) + { + Logger.LogWarning("Calculated Bandwidth Limit is negative, returning Infinity: {value}, CurrentlyUsedDownloadSlots is {currentSlots}, " + + "DownloadSpeedLimit is {limit}, available slots: {avail}, current count: {count}", dividedLimit, currentUsedDlSlots, limit, avaialble, currentCount); + return long.MaxValue; + } + return Math.Clamp(dividedLimit, 1, long.MaxValue); } private async Task SendRequestInternalAsync(HttpRequestMessage requestMessage, diff --git a/MareSynchronos/WebAPI/SignalR/ApIController.Functions.Users.cs b/MareSynchronos/WebAPI/SignalR/ApIController.Functions.Users.cs index 15ea2f3..657c8b1 100644 --- a/MareSynchronos/WebAPI/SignalR/ApIController.Functions.Users.cs +++ b/MareSynchronos/WebAPI/SignalR/ApIController.Functions.Users.cs @@ -14,7 +14,8 @@ public partial class ApiController try { - await PushCharacterDataInternal(data, visibleCharacters.ToList()).ConfigureAwait(false); + Logger.LogDebug("Pushing Character data {hash} to {visible}", data.DataHash, string.Join(", ", visibleCharacters.Select(v => v.AliasOrUID))); + await PushCharacterDataInternal(data, [.. visibleCharacters]).ConfigureAwait(false); } catch (OperationCanceledException) { @@ -106,4 +107,4 @@ public partial class ApiController await UserPushData(new(visibleCharacters, character)).ConfigureAwait(false); } -} \ No newline at end of file +} diff --git a/MareSynchronos/WebAPI/SignalR/ApiController.cs b/MareSynchronos/WebAPI/SignalR/ApiController.cs index 5784f2a..35d4a5f 100644 --- a/MareSynchronos/WebAPI/SignalR/ApiController.cs +++ b/MareSynchronos/WebAPI/SignalR/ApiController.cs @@ -389,6 +389,7 @@ public sealed partial class ApiController : DisposableMediatorSubscriberBase, IM } await LoadIninitialPairs().ConfigureAwait(false); await LoadOnlinePairs().ConfigureAwait(false); + Mediator.Publish(new ConnectedMessage(_connectionDto)); } catch (Exception ex) {