From 3c50d26808461e8f28b66e99bb6511a875e8cfb5 Mon Sep 17 00:00:00 2001 From: Gerasimos Maropoulos Date: Fri, 5 Aug 2016 08:44:52 +0300 Subject: [PATCH] Add easy way to set Read/WriteTimeout instead of http://targetliu.com/golang-iriszhong-tong-guo-pluginshe-zhi-httpchao-shi-shi-jian/ Instead of this article, I just found, shows you how to inject the main server, now you can just use the: iris.ListenTo(config.Server{WriteTimeout: 5* time.Second, ReadTimeout= 5*time.Second, ListeningAddr:":8080"}) --- config/server.go | 14 ++++++++++++++ http.go | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/config/server.go b/config/server.go index f94274e6..ba103cf6 100644 --- a/config/server.go +++ b/config/server.go @@ -4,6 +4,7 @@ import ( "os" "strconv" "strings" + "time" "github.com/imdario/mergo" "github.com/valyala/fasthttp" @@ -75,6 +76,19 @@ type Server struct { // Default buffer size is used if not set. WriteBufferSize int + // Maximum duration for reading the full request (including body). + // + // This also limits the maximum duration for idle keep-alive + // connections. + // + // By default request read timeout is unlimited. + ReadTimeout time.Duration + + // Maximum duration for writing the full response (including body). + // + // By default response write timeout is unlimited. + WriteTimeout time.Duration + // RedirectTo, defaults to empty, set it in order to override the station's handler and redirect all requests to this address which is of form(HOST:PORT or :PORT) // // NOTE: the http status is 'StatusMovedPermanently', means one-time-redirect(the browser remembers the new addr and goes to the new address without need to request something from this server diff --git a/http.go b/http.go index 42e158f4..f6c7e5b4 100644 --- a/http.go +++ b/http.go @@ -434,7 +434,8 @@ func (s *Server) Open(h fasthttp.RequestHandler) error { s.Server.MaxRequestBodySize = s.Config.MaxRequestBodySize s.Server.ReadBufferSize = s.Config.ReadBufferSize s.Server.WriteBufferSize = s.Config.WriteBufferSize - + s.Server.ReadTimeout = s.Config.ReadTimeout + s.Server.WriteTimeout = s.Config.WriteTimeout if s.Config.RedirectTo != "" { // override the handler and redirect all requests to this addr s.Server.Handler = func(reqCtx *fasthttp.RequestCtx) {