feat: add option to enable or disable concurrent listeners

This commit is contained in:
Stavros
2026-05-09 13:52:49 +03:00
parent 02b48aa165
commit 4e760e8397
2 changed files with 43 additions and 20 deletions
+32 -11
View File
@@ -238,21 +238,42 @@ func (app *BootstrapApp) Setup() error {
} }
// create err channel to listen for server errors // create err channel to listen for server errors
errChan := make(chan error, 2) errChanLen := 0
runUnix := app.config.Server.SocketPath != ""
runHTTP := app.config.Server.SocketPath == "" || app.config.Server.ConcurrentListenersEnabled
if runUnix {
errChanLen++
}
if runHTTP {
errChanLen++
}
errChan := make(chan error, errChanLen)
if app.config.Server.ConcurrentListenersEnabled {
app.log.App.Info().Msg("Concurrent listeners enabled, will run on all available listeners")
}
// serve unix // serve unix
app.wg.Go(func() { if runUnix {
if err := app.serveUnix(); err != nil { app.wg.Go(func() {
errChan <- err if err := app.serveUnix(); err != nil {
} errChan <- err
}) }
})
}
// serve to http // serve to http
app.wg.Go(func() { if runHTTP {
if err := app.serveHTTP(); err != nil { app.wg.Go(func() {
errChan <- err if err := app.serveHTTP(); err != nil {
} errChan <- err
}) }
})
}
// monitor cancellation and server errors // monitor cancellation and server errors
for { for {
+11 -9
View File
@@ -14,8 +14,9 @@ func NewDefaultConfiguration() *Config {
Path: "./resources", Path: "./resources",
}, },
Server: ServerConfig{ Server: ServerConfig{
Port: 3000, Port: 3000,
Address: "0.0.0.0", Address: "0.0.0.0",
ConcurrentListenersEnabled: false,
}, },
Auth: AuthConfig{ Auth: AuthConfig{
SubdomainsEnabled: true, SubdomainsEnabled: true,
@@ -95,9 +96,10 @@ type ResourcesConfig struct {
} }
type ServerConfig struct { type ServerConfig struct {
Port int `description:"The port on which the server listens." yaml:"port"` Port int `description:"The port on which the server listens." yaml:"port"`
Address string `description:"The address on which the server listens." yaml:"address"` Address string `description:"The address on which the server listens." yaml:"address"`
SocketPath string `description:"The path to the Unix socket." yaml:"socketPath"` SocketPath string `description:"The path to the Unix socket." yaml:"socketPath"`
ConcurrentListenersEnabled bool `description:"Enable listening on both TCP and Unix socket at the same time." yaml:"concurrentListenersEnabled"`
} }
type AuthConfig struct { type AuthConfig struct {
@@ -147,10 +149,10 @@ type IPConfig struct {
} }
type OAuthConfig struct { type OAuthConfig struct {
Whitelist []string `description:"Comma-separated list of allowed OAuth domains." yaml:"whitelist"` Whitelist []string `description:"Comma-separated list of allowed OAuth domains." yaml:"whitelist"`
WhitelistFile string `description:"Path to the OAuth whitelist file." yaml:"whitelistFile"` WhitelistFile string `description:"Path to the OAuth whitelist file." yaml:"whitelistFile"`
AutoRedirect string `description:"The OAuth provider to use for automatic redirection." yaml:"autoRedirect"` AutoRedirect string `description:"The OAuth provider to use for automatic redirection." yaml:"autoRedirect"`
Providers map[string]OAuthServiceConfig `description:"OAuth providers configuration." yaml:"providers"` Providers map[string]OAuthServiceConfig `description:"OAuth providers configuration." yaml:"providers"`
} }
type OIDCConfig struct { type OIDCConfig struct {