From 02db5add80b0e410ffced3b6a08ee35d7444c568 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Matczuk?= Date: Fri, 8 Nov 2024 11:39:41 +0100 Subject: [PATCH] http proxy: add mandatory name to ListenerConfig in ExtraListeners --- http_proxy.go | 11 ++++++++--- net.go | 5 +++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/http_proxy.go b/http_proxy.go index 14cf4531..8ac106ba 100644 --- a/http_proxy.go +++ b/http_proxy.go @@ -81,7 +81,7 @@ var ErrConnectFallback = martian.ErrConnectFallback type HTTPProxyConfig struct { HTTPServerConfig - ExtraListeners []ListenerConfig + ExtraListeners []NamedListenerConfig Name string MITM *MITMConfig MITMDomains Matcher @@ -124,6 +124,11 @@ func (c *HTTPProxyConfig) Validate() error { if err := c.HTTPServerConfig.Validate(); err != nil { return err } + for _, lc := range c.ExtraListeners { + if lc.Name == "" { + return errors.New("extra listener name is required") + } + } if c.Protocol != HTTPScheme && c.Protocol != HTTPSScheme { return fmt.Errorf("unsupported protocol: %s", c.Protocol) } @@ -582,10 +587,10 @@ func (hp *HTTPProxy) listen() (_ []net.Listener, ferr error) { } }() - for _, lc := range append([]ListenerConfig{hp.config.ListenerConfig}, hp.config.ExtraListeners...) { + for _, lc := range append([]NamedListenerConfig{{ListenerConfig: hp.config.ListenerConfig}}, hp.config.ExtraListeners...) { l := new(Listener) *l = prototype - l.ListenerConfig = lc + l.ListenerConfig = lc.ListenerConfig if err := l.Listen(); err != nil { return nil, err } diff --git a/net.go b/net.go index ea371e1b..6675e4b9 100644 --- a/net.go +++ b/net.go @@ -191,6 +191,11 @@ func DefaultListenerConfig(addr string) *ListenerConfig { } } +type NamedListenerConfig struct { + Name string + ListenerConfig +} + type Listener struct { ListenerConfig TLSConfig *tls.Config