9494
9595 startPprof ()
9696
97- opts , certManager , err := getTLSConfigurations ()
97+ opts , certManager , tlsConfig , err := getTLSConfigurations ()
9898 if err != nil {
9999 return err
100100 }
@@ -132,17 +132,18 @@ var (
132132
133133 // Start the main server - always serve HTTP with WebSocket proxy support
134134 // If certManager is configured and signalPort == 443, it's already handled by startServerWithCertManager
135- if certManager == nil {
135+ if tlsConfig == nil {
136136 // Without TLS, serve plain HTTP
137137 httpListener , err = net .Listen ("tcp" , fmt .Sprintf (":%d" , signalPort ))
138138 if err != nil {
139139 return err
140140 }
141141 log .Infof ("running HTTP server with WebSocket proxy (no TLS): %s" , httpListener .Addr ().String ())
142142 serveHTTP (httpListener , grpcRootHandler )
143- } else if signalPort != 443 {
144- // With TLS but not on port 443, serve HTTPS
145- httpListener , err = tls .Listen ("tcp" , fmt .Sprintf (":%d" , signalPort ), certManager .TLSConfig ())
143+ } else if certManager == nil || signalPort != 443 {
144+ // Serve HTTPS if not already handled by startServerWithCertManager
145+ // (custom certificates or Let's Encrypt with custom port)
146+ httpListener , err = tls .Listen ("tcp" , fmt .Sprintf (":%d" , signalPort ), tlsConfig )
146147 if err != nil {
147148 return err
148149 }
@@ -202,7 +203,7 @@ func startPprof() {
202203 }()
203204}
204205
205- func getTLSConfigurations () ([]grpc.ServerOption , * autocert.Manager , error ) {
206+ func getTLSConfigurations () ([]grpc.ServerOption , * autocert.Manager , * tls. Config , error ) {
206207 var (
207208 err error
208209 certManager * autocert.Manager
@@ -211,33 +212,33 @@ func getTLSConfigurations() ([]grpc.ServerOption, *autocert.Manager, error) {
211212
212213 if signalLetsencryptDomain == "" && signalCertFile == "" && signalCertKey == "" {
213214 log .Infof ("running without TLS" )
214- return nil , nil , nil
215+ return nil , nil , nil , nil
215216 }
216217
217218 if signalLetsencryptDomain != "" {
218219 certManager , err = encryption .CreateCertManager (signalSSLDir , signalLetsencryptDomain )
219220 if err != nil {
220- return nil , certManager , err
221+ return nil , certManager , nil , err
221222 }
222223 tlsConfig = certManager .TLSConfig ()
223224 log .Infof ("setting up TLS with LetsEncrypt." )
224225 } else {
225226 if signalCertFile == "" || signalCertKey == "" {
226227 log .Errorf ("both cert-file and cert-key must be provided when not using LetsEncrypt" )
227- return nil , certManager , errors .New ("both cert-file and cert-key must be provided when not using LetsEncrypt" )
228+ return nil , certManager , nil , errors .New ("both cert-file and cert-key must be provided when not using LetsEncrypt" )
228229 }
229230
230231 tlsConfig , err = loadTLSConfig (signalCertFile , signalCertKey )
231232 if err != nil {
232233 log .Errorf ("cannot load TLS credentials: %v" , err )
233- return nil , certManager , err
234+ return nil , certManager , nil , err
234235 }
235236 log .Infof ("setting up TLS with custom certificates." )
236237 }
237238
238239 transportCredentials := credentials .NewTLS (tlsConfig )
239240
240- return []grpc.ServerOption {grpc .Creds (transportCredentials )}, certManager , err
241+ return []grpc.ServerOption {grpc .Creds (transportCredentials )}, certManager , tlsConfig , err
241242}
242243
243244func startServerWithCertManager (certManager * autocert.Manager , grpcRootHandler http.Handler ) {
0 commit comments