rpc: sanitize timeout values for library use

This commit is contained in:
Péter Szilágyi 2018-07-31 12:14:05 +03:00
parent 1307a9c89a
commit 254d2655f8
No known key found for this signature in database
GPG key ID: E9AE538CEDF8293D

View file

@ -31,6 +31,7 @@ import (
"sync"
"time"
"github.com/ethereum/go-ethereum/log"
"github.com/rs/cors"
)
@ -198,6 +199,20 @@ func NewHTTPServer(cors []string, vhosts []string, timeouts HTTPTimeouts, srv *S
handler := newCorsHandler(srv, cors)
handler = newVHostHandler(vhosts, handler)
// Make sure timeout values are meaningful
if timeouts.ReadTimeout < time.Second {
log.Warn("Sanitizing invalid HTTP read timeout", "provided", timeouts.ReadTimeout, "updated", DefaultHTTPTimeouts.ReadTimeout)
timeouts.ReadTimeout = DefaultHTTPTimeouts.ReadTimeout
}
if timeouts.WriteTimeout < time.Second {
log.Warn("Sanitizing invalid HTTP write timeout", "provided", timeouts.WriteTimeout, "updated", DefaultHTTPTimeouts.WriteTimeout)
timeouts.WriteTimeout = DefaultHTTPTimeouts.WriteTimeout
}
if timeouts.IdleTimeout < time.Second {
log.Warn("Sanitizing invalid HTTP idle timeout", "provided", timeouts.IdleTimeout, "updated", DefaultHTTPTimeouts.IdleTimeout)
timeouts.IdleTimeout = DefaultHTTPTimeouts.IdleTimeout
}
// Bundle and start the HTTP server
return &http.Server{
Handler: handler,
ReadTimeout: timeouts.ReadTimeout,