Feature/server lifecycle - #518
Merged
regyssilveira merged 3 commits intoJul 11, 2026
Merged
Conversation
…cross all providers and add useStartup sample
…ion and path resolving in E2E scripts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request: Unified Server Lifecycle Hooks, Graceful Shutdown, and Multi-Instance Sockets
Description
This pull request introduces a cohesive alignment and robust implementation of Server Lifecycle Hooks, Graceful Shutdown, and Multi-Instance Sockets across all 14 network transport providers (covering Delphi, FreePascal, Windows, Linux, and IIS hosts).
It resolves dangling pointer bugs, provides compatibility with FreePascal compilers (Linux ELF builds), adds structured bootstrapping support via
UseStartup/IHorseStartup, and resolves a legacy limitation in the Indy Console Provider, allowing it to bind to multiple concurrent ports on a single process.Key Modifications
1. Unified Lifecycle Hooks & Multi-Instance Resolution
TriggerBeforeListenandTriggerBeforeStopcallbacks at the transport layer of all providers.GetActivePortclass methods globally to enable dynamic instance routing.THorseInstance.Destroy(UnregisterHorseInstance) preventing random Access Violations (offset D408) during cleanup.2. Multi-Port Bindings Support for Indy
GInstanceskeys and map multipleTIdSocketHandlebindings.Active := False->Active := True) to reconstruct active sockets on concurrent instance listen calls.9001and9002concurrently) within the same process.3. Structured Bootstrapping (Startup App)
UseStartupandIHorseStartup.4. Cross-Platform FPC Compatibility
THorseServerLifecycleProcin Horse.Instance.pas to support classic method pointers on FPC (which does not support anonymous methods /reference to procedure).5. Documentation Updates
Verification and Integration Testing
Automated Test Suite (Windows)
All 168 unit tests passed with 0 memory leaks: