mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Prevent hang when deleting while streaming (#3169)
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"errors"
|
||||
"io"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/stashapp/stash/internal/manager/config"
|
||||
"github.com/stashapp/stash/internal/static"
|
||||
@@ -46,7 +47,21 @@ func (c *StreamRequestContext) Cancel() {
|
||||
if err != nil {
|
||||
logger.Warnf("unable to write end of stream: %v", err)
|
||||
}
|
||||
_ = bw.Flush()
|
||||
|
||||
// flush the buffer, but don't wait indefinitely
|
||||
timeout := make(chan struct{}, 1)
|
||||
go func() {
|
||||
_ = bw.Flush()
|
||||
close(timeout)
|
||||
}()
|
||||
|
||||
const waitTime = time.Second
|
||||
|
||||
select {
|
||||
case <-timeout:
|
||||
case <-time.After(waitTime):
|
||||
logger.Warnf("unable to flush buffer - closing connection")
|
||||
}
|
||||
}
|
||||
|
||||
conn.Close()
|
||||
|
||||
Reference in New Issue
Block a user