From 0afbca40905478f4eadceb0a9576ce0e1ed33876 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Tue, 6 Jan 2015 11:01:11 -0800 Subject: [PATCH] etcdmain: add readtimeout for http server --- etcdmain/etcd.go | 5 +++-- etcdmain/http.go | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/etcdmain/etcd.go b/etcdmain/etcd.go index 7b62dc1b8..1327ce829 100644 --- a/etcdmain/etcd.go +++ b/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 diff --git a/etcdmain/http.go b/etcdmain/http.go index 23a252936..fd3f9faee 100644 --- a/etcdmain/http.go +++ b/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) }