26 Commits
Author SHA1 Message Date
Jordan Dominion 3c46164515 ThrowsExactly conversion except harder 2025-08-01 19:37:43 -04:00
Jordan Dominion 9e8bdde30c Remove HttpClient abstractions
Now implement mocked `HttpMessageHandler`s as recommended: https://stackoverflow.com/a/36427274/3976486
2025-07-27 15:34:33 -04:00
Jordan Dominion 2e75125860 OIDC First Implementation 2025-03-09 17:53:43 -04:00
Jordan Dominion be6960d942 Move long-running delay task fix to AsyncDelayer
Fixes #1985
2024-11-03 10:28:09 -05:00
Jordan Dominion ff262b2584 Improve LoginPayload 2024-09-14 14:54:54 -04:00
Jordan Dominion b52938545c Fix dynamic signing key switching 2024-09-12 23:38:41 -04:00
Jordan Dominion 99baac333e Version Swarm API separately from core version. Allow slight differences. 2024-09-12 18:39:46 -04:00
Jordan Dominion 8b59884bf9 Final ValueTask conversion 2023-10-07 17:41:19 -04:00
Jordan Dominion faeb730ebe Penultimate ValueTask conversion 2023-10-07 17:31:50 -04:00
Jordan Dominion 8166cd3629 ValueTask conversion for controllers 2023-10-07 15:53:35 -04:00
Dominion 4471391b96 ValueTask Tgstation.Server.Client 2023-06-14 12:30:00 -04:00
Dominion 71753f5a44 ValueTask a bunch of Database Functions 2023-06-14 02:33:02 -04:00
Dominion e596110018 Clean up Tgstation.Server.Common
- Move classes to `Http` namespace.
- Give it a unique package version.
- Comment to make me not rage update Nuget libs to .NET 6.
2023-06-10 17:04:04 -04:00
Dominion 6ae07f404a Massive readibility improvement for swarm updates
- Extract dubiously guarded `SwarmService` variables into `volatile` handler class with `Interlocked` writes.
- `SwarmService.Abort` can no longer be cancelled, but it short circuits more easily.
- Improved `SwarmRpcMapper`'s handling of `CancellationToken`s.
2023-06-10 17:03:59 -04:00
Dominion 09208ade36 Swarm updates single source downloads
When running a distributed swarm server update, only the initiator server will download the update package directly from GitHub. It will then make the package available to the other nodes via a `SwarmController` hosted variant of the `FileTransferService` which they will use to retrieve their copies of the package.

Because of this, it's possible for the update package to be accessed via the regular `TransferController` duing this process. This is acceptable for three reasons:

- We use crytographically secure strings for the transfer service tickets
- If a malicious user steals one or more of the Swarm's update package tickets, the update will simply be aborted.
- An update package is not considered secure data what with this being OSS.
2023-06-10 16:13:29 -04:00
Dominion 3768da7bea Fixed rare race condition in swarm protocol tests 2023-04-28 12:37:43 -04:00
Dominion 43e1fec1b0 Move a bunch of non-core classes to new Utils namespace
- Clean up VS messages, primarily in SessionController.cs
2023-04-23 13:42:16 -04:00
Dominion 2195f4cbc7 Fix logging call 2023-04-22 19:14:51 -04:00
Dominion 5195e78baf Fixing more race conditions in swarm tests 2023-04-22 18:56:32 -04:00
Dominion d0ac8f5000 Got rid of that useless swarm registration abstraction AND fixed race condition in SwarmRpcMapper calls 2023-04-22 17:16:34 -04:00
Dominion 783b58aaa3 Additional logging attempting to find cause of flaky tests 2023-04-22 10:51:43 -04:00
Dominion b797451e2b Add better error handling to SwarmRpcMapper 2023-04-22 10:39:34 -04:00
Dominion 079ab20752 Swarm test framework cleanup 2023-04-22 10:05:53 -04:00
Dominion b83f382f45 Tested swarm controller and fixed some edge cases
- No longer registers for restart unnecessarily
- Fixed infinite wait when committing update
- Fixed unregistering without a registration
- Abort updates if the controller health check fails
2023-04-22 01:02:22 -04:00
Dominion e30799d0f2 Code cleanups 2023-04-21 15:18:47 -04:00
Dominion 1c219ebadd Framework for testing Swarm protocol 2023-04-21 15:11:44 -04:00