add reload of main listener on SIGHUP
This commit is contained in:
parent
6b1d0ff5c2
commit
88697cf2ae
2 changed files with 37 additions and 31 deletions
|
@ -11,8 +11,11 @@ import (
|
|||
"log"
|
||||
"net"
|
||||
"net/url"
|
||||
"os"
|
||||
"os/signal"
|
||||
"path"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
@ -113,11 +116,22 @@ func (s *Server) logf(format string, v ...interface{}) {
|
|||
}
|
||||
|
||||
func (s *Server) ListenAndServe() error {
|
||||
s.closed = make(chan struct{})
|
||||
hup := make(chan os.Signal, 1)
|
||||
signal.Notify(hup, syscall.SIGHUP)
|
||||
go func() {
|
||||
for {
|
||||
<-hup
|
||||
if s.listener != nil {
|
||||
// TODO: reload TLSConfig
|
||||
s.listener.Close()
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
// outer for loop, if listener closes we will restart it. This may be useful if we switch out
|
||||
// TLSConfig.
|
||||
//for {
|
||||
for {
|
||||
s.closed = make(chan struct{})
|
||||
var err error
|
||||
s.listener, err = tls.Listen("tcp", s.Addr, s.TLSConfig)
|
||||
if err != nil {
|
||||
|
@ -127,6 +141,7 @@ func (s *Server) ListenAndServe() error {
|
|||
queue := make(chan net.Conn, s.MaxOpenConns)
|
||||
go s.handleConnectionQueue(queue)
|
||||
|
||||
s.logf("Accepting new connections on %v", s.listener.Addr())
|
||||
for {
|
||||
conn, err := s.listener.Accept()
|
||||
if err != nil {
|
||||
|
@ -142,10 +157,10 @@ func (s *Server) ListenAndServe() error {
|
|||
}
|
||||
// closed confirms the accept call stopped
|
||||
close(s.closed)
|
||||
//if s.shutdown {
|
||||
// return nil
|
||||
//}
|
||||
//}
|
||||
if s.shutdown {
|
||||
break
|
||||
}
|
||||
}
|
||||
s.log("closing listener gracefully")
|
||||
return s.listener.Close()
|
||||
}
|
||||
|
|
9
main.go
9
main.go
|
@ -134,15 +134,6 @@ func main() {
|
|||
<-confirm
|
||||
cancel()
|
||||
|
||||
/*
|
||||
hup := make(chan os.Signal, 1)
|
||||
signal.Notify(hup, syscall.SIGHUP)
|
||||
go func() {
|
||||
for {
|
||||
<-hup
|
||||
}
|
||||
}()
|
||||
*/
|
||||
}
|
||||
|
||||
func logger(log *log.Logger) func(next gemini.Handler) gemini.Handler {
|
||||
|
|
Loading…
Reference in a new issue