]> Sergey Matveev's repositories - godlighty.git/blobdiff - cmd/godlighty/main.go
R/W deadlines on connections
[godlighty.git] / cmd / godlighty / main.go
index 4198753b354edb4411c94c105354fec7196bbfac..e15c165fe500f799c0c97367c59a1a8e324f8179 100644 (file)
@@ -40,7 +40,10 @@ import (
 
 const MaxConns = 128
 
-var GracefulTime = 10 * time.Second
+var (
+       GracefulTime = 10 * time.Second
+       RWTimeout    = 30 * time.Second
+)
 
 func main() {
        bind := flag.String("bind", "[::]:80", "Address to bind and listen on")
@@ -57,7 +60,7 @@ func main() {
        shutdown := make(chan os.Signal)
        signal.Notify(shutdown, syscall.SIGTERM, syscall.SIGINT, syscall.SIGHUP)
        exitErr := make(chan error)
-       l, err := net.Listen("tcp", *bind)
+       l, err := godlighty.DeadlinedListen("tcp", *bind, RWTimeout, RWTimeout)
        if err != nil {
                log.Fatalln(err)
        }
@@ -101,7 +104,11 @@ func main() {
                }
        }()
 
-       srv := http.Server{Handler: godlighty.MainHandler}
+       srv := http.Server{
+               Handler:           godlighty.MainHandler,
+               ReadHeaderTimeout: RWTimeout,
+               IdleTimeout:       time.Minute,
+       }
        go func() {
                <-shutdown
                log.Println("shutting down")