- Timestamp:
- Mar 18, 2021, 1:07:03 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/cmd/soju/main.go
r470 r475 11 11 "os/signal" 12 12 "strings" 13 "sync/atomic" 13 14 "syscall" 14 15 … … 51 52 52 53 var tlsCfg *tls.Config 54 var tlsCert atomic.Value 53 55 if cfg.TLS != nil { 54 56 cert, err := tls.LoadX509KeyPair(cfg.TLS.CertPath, cfg.TLS.KeyPath) … … 56 58 log.Fatalf("failed to load TLS certificate and key: %v", err) 57 59 } 58 tlsCfg = &tls.Config{Certificates: []tls.Certificate{cert}} 60 tlsCert.Store(cert) 61 62 tlsCfg = &tls.Config{ 63 GetCertificate: func(*tls.ClientHelloInfo) (*tls.Certificate, error) { 64 return tlsCert.Load().(*tls.Certificate), nil 65 }, 66 } 59 67 } 60 68 … … 181 189 182 190 sigCh := make(chan os.Signal, 1) 183 signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM )191 signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP) 184 192 185 193 if err := srv.Start(); err != nil { … … 187 195 } 188 196 189 <-sigCh 190 log.Print("shutting down server") 191 srv.Shutdown() 197 for sig := range sigCh { 198 switch sig { 199 case syscall.SIGHUP: 200 if cfg.TLS != nil { 201 log.Print("reloading TLS certificate") 202 cert, err := tls.LoadX509KeyPair(cfg.TLS.CertPath, cfg.TLS.KeyPath) 203 if err != nil { 204 log.Printf("failed to reload TLS certificate and key: %v", err) 205 break 206 } 207 tlsCert.Store(cert) 208 } 209 case syscall.SIGINT, syscall.SIGTERM: 210 log.Print("shutting down server") 211 srv.Shutdown() 212 return 213 } 214 } 192 215 } 193 216
Note:
See TracChangeset
for help on using the changeset viewer.