From 4f0d8993469d60c36ada6d870e9e4066a6c00b4f Mon Sep 17 00:00:00 2001 From: NI Date: Sat, 10 Aug 2019 14:54:18 +0800 Subject: [PATCH] Calculate `HeartbeatTimeout` configuration in the right way. --- application/configuration/config.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/application/configuration/config.go b/application/configuration/config.go index f0dc195..4a20257 100644 --- a/application/configuration/config.go +++ b/application/configuration/config.go @@ -64,6 +64,14 @@ func (s Server) maxDur(cur, def time.Duration) time.Duration { return def } +func (s Server) minDur(cur, def time.Duration) time.Duration { + if cur < def { + return cur + } + + return def +} + // WithDefault build the configuration and fill the blank with default values func (s Server) WithDefault() Server { initialTimeout := s.maxDur(s.InitialTimeout, 1*time.Second) @@ -77,7 +85,7 @@ func (s Server) WithDefault() Server { InitialTimeout: initialTimeout, ReadTimeout: readTimeout, WriteTimeout: s.maxDur(s.WriteTimeout, 3*time.Second), - HeartbeatTimeout: s.maxDur(s.ReadTimeout, readTimeout/2), + HeartbeatTimeout: s.minDur(s.HeartbeatTimeout, readTimeout/2), ReadDelay: s.ReadDelay, WriteDelay: s.WriteDelay, TLSCertificateFile: s.TLSCertificateFile,