From f4b371303aa3726b6c00c4354dcbb41c0d3723ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Thu, 20 Apr 2023 17:13:35 +0200 Subject: [PATCH] fix: don't overwrite write_timeout in transport URL if set (#763) --- caddy/caddy.go | 6 ++++-- hub.go | 12 +++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/caddy/caddy.go b/caddy/caddy.go index 7a8f5cd4..d1a3f53a 100644 --- a/caddy/caddy.go +++ b/caddy/caddy.go @@ -142,8 +142,10 @@ func (m *Mercure) Provision(ctx caddy.Context) error { //nolint:funlen if m.WriteTimeout != nil { query := u.Query() - query.Set("write_timeout", time.Duration(*m.WriteTimeout).String()) - u.RawQuery = query.Encode() + if !query.Has("write_timeout") { + query.Set("write_timeout", time.Duration(*m.WriteTimeout).String()) + u.RawQuery = query.Encode() + } } transport, err := mercure.NewTransport(u, m.logger) diff --git a/hub.go b/hub.go index facf610c..0f46efbd 100644 --- a/hub.go +++ b/hub.go @@ -14,6 +14,12 @@ import ( "go.uber.org/zap" ) +const ( + DefaultWriteTimeout = 600 * time.Second + DefaultDispatchTimeout = 5 * time.Second + DefaultHeartbeat = 40 * time.Second +) + // ErrUnsupportedProtocolVersion is returned when the version passed is unsupported. var ErrUnsupportedProtocolVersion = errors.New("compatibility mode only supports protocol version 7") @@ -285,9 +291,9 @@ type Hub struct { // NewHub creates a new Hub instance. func NewHub(options ...Option) (*Hub, error) { opt := &opt{ - writeTimeout: 600 * time.Second, - dispatchTimeout: 5 * time.Second, - heartbeat: 40 * time.Second, + writeTimeout: DefaultWriteTimeout, + dispatchTimeout: DefaultDispatchTimeout, + heartbeat: DefaultHeartbeat, } for _, o := range options {