@@ -28,6 +28,7 @@ import (
2828func (p * Proxy ) listenHTTP (
2929 ctx context.Context ,
3030 addr * net.TCPAddr ,
31+ withTLS bool ,
3132) (ln net.Listener , tcpAddr * net.TCPAddr , err error ) {
3233 var tcpListen * net.TCPListener
3334 err = p .bindWithRetry (ctx , func () (listenErr error ) {
@@ -45,14 +46,20 @@ func (p *Proxy) listenHTTP(
4546 return nil , nil , fmt .Errorf ("bad listener address type: %T" , laddr )
4647 }
4748
48- p .logger .InfoContext (ctx , "listening to https" , "addr" , tcpAddr )
49+ if withTLS {
50+ p .logger .InfoContext (ctx , "listening to https" , "addr" , tcpAddr )
4951
50- tlsConfig := p .TLSConfig .Clone ()
51- tlsConfig .NextProtos = []string {http2 .NextProtoTLS , "http/1.1" }
52+ tlsConfig := p .TLSConfig .Clone ()
53+ tlsConfig .NextProtos = []string {http2 .NextProtoTLS , "http/1.1" }
54+
55+ tlsListen := tls .NewListener (tcpListen , tlsConfig )
5256
53- tlsListen := tls .NewListener (tcpListen , tlsConfig )
57+ return tlsListen , tcpAddr , nil
58+ }
5459
55- return tlsListen , tcpAddr , nil
60+ p .logger .InfoContext (ctx , "listening to http" , "addr" , tcpAddr )
61+
62+ return tcpListen , tcpAddr , nil
5663}
5764
5865// listenH3 creates instances of QUIC listeners that will be used for running
@@ -73,6 +80,27 @@ func (p *Proxy) listenH3(
7380 return quicListen , nil
7481}
7582
83+ func (p * Proxy ) initHTTPListeners (ctx context.Context ) (err error ) {
84+ p .httpServer = & http.Server {
85+ Handler : p ,
86+ ReadHeaderTimeout : defaultTimeout ,
87+ WriteTimeout : defaultTimeout ,
88+ }
89+
90+ for _ , addr := range p .HTTPListenAddr {
91+ p .logger .InfoContext (ctx , "creating an http server" )
92+
93+ ln , _ , lErr := p .listenHTTP (ctx , addr , false )
94+ if lErr != nil {
95+ return fmt .Errorf ("failed to start HTTPS server on %s: %w" , addr , lErr )
96+ }
97+
98+ p .httpListen = append (p .httpListen , ln )
99+ }
100+
101+ return nil
102+ }
103+
76104// initHTTPSListeners creates TCP/UDP listeners and HTTP/H3 servers.
77105func (p * Proxy ) initHTTPSListeners (ctx context.Context ) (err error ) {
78106 p .httpsServer = & http.Server {
@@ -90,7 +118,7 @@ func (p *Proxy) initHTTPSListeners(ctx context.Context) (err error) {
90118 for _ , addr := range p .HTTPSListenAddr {
91119 p .logger .InfoContext (ctx , "creating an https server" )
92120
93- ln , tcpAddr , lErr := p .listenHTTP (ctx , addr )
121+ ln , tcpAddr , lErr := p .listenHTTP (ctx , addr , true )
94122 if lErr != nil {
95123 return fmt .Errorf ("failed to start HTTPS server on %s: %w" , addr , lErr )
96124 }
0 commit comments