mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 04:50:52 +08:00
fix: stop streaming loop on context cancel
This commit is contained in:
@@ -437,7 +437,21 @@ func (h *BaseAPIHandler) ExecuteStreamWithAuthManager(ctx context.Context, handl
|
|||||||
|
|
||||||
outer:
|
outer:
|
||||||
for {
|
for {
|
||||||
for chunk := range chunks {
|
for {
|
||||||
|
var chunk coreexecutor.StreamChunk
|
||||||
|
var ok bool
|
||||||
|
if ctx != nil {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
case chunk, ok = <-chunks:
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
chunk, ok = <-chunks
|
||||||
|
}
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
if chunk.Err != nil {
|
if chunk.Err != nil {
|
||||||
streamErr := chunk.Err
|
streamErr := chunk.Err
|
||||||
// Safe bootstrap recovery: if the upstream fails before any payload bytes are sent,
|
// Safe bootstrap recovery: if the upstream fails before any payload bytes are sent,
|
||||||
@@ -474,7 +488,6 @@ func (h *BaseAPIHandler) ExecuteStreamWithAuthManager(ctx context.Context, handl
|
|||||||
dataChan <- cloneBytes(chunk.Payload)
|
dataChan <- cloneBytes(chunk.Payload)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
return dataChan, errChan
|
return dataChan, errChan
|
||||||
|
|||||||
Reference in New Issue
Block a user