Merge pull request #2045 from xiang90/read_timeout

etcdmain: add readtimeout for http server
release-2.0
Xiang Li 2015-01-06 11:31:24 -08:00
commit 47113d776e
2 changed files with 8 additions and 5 deletions

View File

@ -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

View File

@ -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)
}