Browse Source

Merge pull request #2045 from xiang90/read_timeout

etcdmain: add readtimeout for http server
Xiang Li 11 years ago
parent
commit
47113d776e
2 changed files with 8 additions and 5 deletions
  1. 3 2
      etcdmain/etcd.go
  2. 5 3
      etcdmain/http.go

+ 3 - 2
etcdmain/etcd.go

@@ -23,6 +23,7 @@ import (
 	"net/http"
 	"os"
 	"strings"
+	"time"
 
 	"github.com/coreos/etcd/discovery"
 	"github.com/coreos/etcd/etcdserver"
@@ -174,13 +175,13 @@ func startEtcd(cfg *config) (<-chan struct{}, error) {
 	// Start the peer server in a goroutine
 	for _, l := range plns {
 		go func(l net.Listener) {
-			log.Fatal(serveHTTP(l, ph))
+			log.Fatal(serveHTTP(l, ph, 5*time.Minute))
 		}(l)
 	}
 	// Start a client server goroutine for each listen address
 	for _, l := range clns {
 		go func(l net.Listener) {
-			log.Fatal(serveHTTP(l, ch))
+			log.Fatal(serveHTTP(l, ch, 30*time.Second))
 		}(l)
 	}
 	return s.StopNotify(), nil

+ 5 - 3
etcdmain/http.go

@@ -5,17 +5,19 @@ import (
 	"log"
 	"net"
 	"net/http"
+	"time"
 )
 
 // serveHTTP accepts incoming HTTP connections on the listener l,
 // creating a new service goroutine for each. The service goroutines
 // read requests and then call handler to reply to them.
-func serveHTTP(l net.Listener, handler http.Handler) error {
+func serveHTTP(l net.Listener, handler http.Handler, readTimeout time.Duration) error {
 	logger := log.New(ioutil.Discard, "etcdhttp", 0)
 	// TODO: add debug flag; enable logging when debug flag is set
 	srv := &http.Server{
-		Handler:  handler,
-		ErrorLog: logger, // do not log user error
+		Handler:     handler,
+		ReadTimeout: readTimeout,
+		ErrorLog:    logger, // do not log user error
 	}
 	return srv.Serve(l)
 }