Support reloading the TLS config via SIGHUP.
[mailpopbox.git] / server.go
1 package main
2
3 import (
4 "net"
5 "os"
6 "os/signal"
7 "syscall"
8
9 "github.com/uber-go/zap"
10 )
11
12 type ServerControlMessage int
13
14 const (
15 ServerControlFatalError ServerControlMessage = iota
16 ServerControlRestart
17 )
18
19 func RunAcceptLoop(l net.Listener, c chan<- net.Conn, log zap.Logger) {
20 for {
21 conn, err := l.Accept()
22 if err != nil {
23 log.Error("accept", zap.Error(err))
24 close(c)
25 return
26 }
27
28 c <- conn
29 }
30 }
31
32 func CreateReloadSignal() <-chan os.Signal {
33 reloadChan := make(chan os.Signal, 1)
34 signal.Notify(reloadChan, syscall.SIGHUP)
35 return reloadChan
36 }