Releases: mlhpdx/SimplestLoadBalancer
Bugfix for Configurable Internal Port Range
When 2.4.0 shipped the intent was to allow specifying a range of ports to use on the "internal" (target facing) side of the load balancer. While the range could be specified it wasn't actually being used (OS selected ports were still being assigned). This release patches that bug and will only use ports from the specified range for making connections to backend targets.
Full Changelog: 2.6.4...2.6.5
Adds Logging for Bad Inquiries
When SLB receives an inquiry for an external IP that is unknown it is now logged to make those events observable.
Full Changelog: 2.6.3...2.6.4
Release Workflow
Triggering release workflow to try to resolve linux-arm64 release failure.
Release Workflow
Triggering release workflows.
Build Workflow and Code Smell Fixes
This release fixes issues in the build workflows and cleans-up some "smells" in the code (explicit disposal of cts and passing cancellation tokens to short Task.Delay calls). No functional or feature changes.
Upgrade to .Net 10
This release is built to target .Net 10, though that should be a transparent change when using the native AoT executables (which are the default now). Moving to .Net 10 and upgrading libraries exposed a breaking change in the way cancellation (Ctrl-C) works, which motivated a small refactor.
Two new command-line options have been introduced that allow configuring the UDP receive and send buffer sizes (--udp-receive-buffer-size and --udp-send-buffer-size, respectively). For very "bursty" environments the OS-dependent default buffer sizes can lead to dropped packets so having an option to increase the sizes can be helpful.
Full Changelog: 2.5.0...2.6.0
Remove System.CommandLine.DragonFruit and AoT by Default
The time has come to remove the dependency on System.CommandLine.DragonFruit in favor of DotMake.CommandLine. The former has been deprecated and no similar model seems likely in the core library. The DotMake package includes source generated command line parsing based on a delegate, which made the conversion very simple (what I've been looking for).
It appears that DotMake.CommandLine support all the same parsing for arguments, but it's possible this version may treat some variations differently so I'm calling this a feature release just to call attention to it and avoid surprise changes in a build number release.
Also in this release, the flag <PublishAoT>true</PublishAoT> has been added to the .csproj. That was always the intent, but DragonFruit didn't support trimming so it was impossible before. This is a nice improvement, and delivers much more efficient executables.
Full Changelog: 2.4.1...2.5.0
Snap Publishing
This release is a placeholder to trigger publishing the SLB via snap.
Configurable Internal Port Range
This update includes a couple changes, the big one being the ability to specify the range of ports to use for communication with backend targets. Previously SLB would defer to the OS to pick any available port. Version 2.4.0 changes that behavior by adding the command-line argument internalPortRange which is used as a pool for internal ports. The serverPortRange and internalPortRange can't overlap.
The second change is that when an inquiry is received for a known client, the response will include the assigned internal port.
Include request in Inquiry response
This patch updates the response to an inquiry to include the full request as context for the receiver.
Full Changelog: 2.3.0...2.3.1