Skip to content

Commit

Permalink
Merge pull request #101 from liggitt/close-leak
Browse files Browse the repository at this point in the history
Avoid leaking goroutines on close
  • Loading branch information
dmcgowan authored Jul 23, 2024
2 parents 93aa56f + 3f1023d commit 77eb080
Showing 1 changed file with 15 additions and 3 deletions.
18 changes: 15 additions & 3 deletions connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -712,7 +712,9 @@ func (s *Connection) shutdown(closeTimeout time.Duration) {

var timeout <-chan time.Time
if closeTimeout > time.Duration(0) {
timeout = time.After(closeTimeout)
timer := time.NewTimer(closeTimeout)
defer timer.Stop()
timeout = timer.C
}
streamsClosed := make(chan bool)

Expand All @@ -739,7 +741,15 @@ func (s *Connection) shutdown(closeTimeout time.Duration) {
}

if err != nil {
duration := 10 * time.Minute
// default to 1 second
duration := time.Second
// if a closeTimeout was given, use that, clipped to 1s-10m
if closeTimeout > time.Second {
duration = closeTimeout
}
if duration > 10*time.Minute {
duration = 10 * time.Minute
}
timer := time.NewTimer(duration)
defer timer.Stop()
select {
Expand Down Expand Up @@ -806,7 +816,9 @@ func (s *Connection) CloseWait() error {
func (s *Connection) Wait(waitTimeout time.Duration) error {
var timeout <-chan time.Time
if waitTimeout > time.Duration(0) {
timeout = time.After(waitTimeout)
timer := time.NewTimer(waitTimeout)
defer timer.Stop()
timeout = timer.C
}

select {
Expand Down

0 comments on commit 77eb080

Please sign in to comment.