@@ -2,13 +2,13 @@ package dotweb
22
33import (
44 "compress/gzip"
5+ "github.com/devfeel/dotweb/logger"
56 "io"
67 "net/http"
78 "net/url"
89 "strings"
910 "sync"
10-
11- "github.com/devfeel/dotweb/logger"
11+ "time"
1212
1313 "github.com/devfeel/dotweb/core"
1414 "github.com/devfeel/dotweb/session"
@@ -84,7 +84,19 @@ func NewHttpServer() *HttpServer {
8484}
8585
8686// initConfig init config from app config
87- func (server * HttpServer ) initConfig () {
87+ func (server * HttpServer ) initConfig (config * config.Config ) {
88+ if config .Server .WriteTimeout > 0 {
89+ server .stdServer .WriteTimeout = time .Duration (config .Server .WriteTimeout ) * time .Millisecond
90+ }
91+ if config .Server .ReadTimeout > 0 {
92+ server .stdServer .ReadTimeout = time .Duration (config .Server .ReadTimeout ) * time .Millisecond
93+ }
94+ if config .Server .ReadHeaderTimeout > 0 {
95+ server .stdServer .ReadHeaderTimeout = time .Duration (config .Server .ReadHeaderTimeout ) * time .Millisecond
96+ }
97+ if config .Server .IdleTimeout > 0 {
98+ server .stdServer .IdleTimeout = time .Duration (config .Server .IdleTimeout ) * time .Millisecond
99+ }
88100}
89101
90102// ServerConfig a shortcut for App.Config.ServerConfig
@@ -475,6 +487,31 @@ func (server *HttpServer) SetEnabledStaticFileMiddleware(isEnabled bool) {
475487 server .Logger ().Debug ("DotWeb:HttpServer SetEnabledStaticFileMiddleware [" + strconv .FormatBool (isEnabled )+ "]" , LogTarget_HttpServer )
476488}
477489
490+ // SetReadTimeout To limit the request's body size to be read with Millisecond
491+ func (server * HttpServer ) SetReadTimeout (readTimeout int64 ) {
492+ server .ServerConfig ().ReadTimeout = readTimeout
493+ server .Logger ().Debug ("DotWeb:HttpServer SetReadTimeout [" + strconv .FormatInt (readTimeout , 10 )+ "]" , LogTarget_HttpServer )
494+ }
495+
496+ // SetReadHeaderTimeout ReadHeaderTimeout is the amount of time allowed to read request headers with Millisecond
497+ func (server * HttpServer ) SetReadHeaderTimeout (readHeaderTimeout int64 ) {
498+ server .ServerConfig ().ReadHeaderTimeout = readHeaderTimeout
499+ server .Logger ().Debug ("DotWeb:HttpServer SetReadHeaderTimeout [" + strconv .FormatInt (readHeaderTimeout , 10 )+ "]" , LogTarget_HttpServer )
500+ }
501+
502+ // SetIdleTimeout IdleTimeout is the maximum amount of time to wait for the next request when keep-alives are enabled with Millisecond
503+ func (server * HttpServer ) SetIdleTimeout (idleTimeout int64 ) {
504+ server .ServerConfig ().IdleTimeout = idleTimeout
505+ server .Logger ().Debug ("DotWeb:HttpServer SetIdleTimeout [" + strconv .FormatInt (idleTimeout , 10 )+ "]" , LogTarget_HttpServer )
506+ }
507+
508+ // SetWriteTimeout WriteTimeout is the maximum duration before timing out
509+ // writes of the response with Millisecond
510+ func (server * HttpServer ) SetWriteTimeout (writeTimeout int64 ) {
511+ server .ServerConfig ().WriteTimeout = writeTimeout
512+ server .Logger ().Debug ("DotWeb:HttpServer SetWriteTimeout [" + strconv .FormatInt (writeTimeout , 10 )+ "]" , LogTarget_HttpServer )
513+ }
514+
478515// SetMaxBodySize set body size to limit read
479516func (server * HttpServer ) SetMaxBodySize (maxBodySize int64 ) {
480517 server .ServerConfig ().MaxBodySize = maxBodySize
0 commit comments