mirror of
https://github.com/syumai/workers.git
synced 2025-03-11 01:39:11 +00:00
ignore io.ErrClosedPipe
This commit is contained in:
parent
b8a67e89dc
commit
01e2085348
@ -75,11 +75,18 @@ type readerToReadableStream struct {
|
|||||||
// - https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream#pull
|
// - https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/ReadableStream#pull
|
||||||
func (rs *readerToReadableStream) Pull(controller js.Value) error {
|
func (rs *readerToReadableStream) Pull(controller js.Value) error {
|
||||||
n, err := rs.reader.Read(rs.chunkBuf)
|
n, err := rs.reader.Read(rs.chunkBuf)
|
||||||
if err == io.EOF {
|
if n != 0 {
|
||||||
|
ua := NewUint8Array(n)
|
||||||
|
js.CopyBytesToJS(ua, rs.chunkBuf[:n])
|
||||||
|
controller.Call("enqueue", ua)
|
||||||
|
}
|
||||||
|
// Cloudflare Workers sometimes call `pull` to closed ReadableStream.
|
||||||
|
// When the call happens, `io.ErrClosedPipe` should be ignored.
|
||||||
|
if err == io.EOF || err == io.ErrClosedPipe {
|
||||||
|
controller.Call("close")
|
||||||
if err := rs.reader.Close(); err != nil {
|
if err := rs.reader.Close(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
controller.Call("close")
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -90,9 +97,6 @@ func (rs *readerToReadableStream) Pull(controller js.Value) error {
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ua := NewUint8Array(n)
|
|
||||||
_ = js.CopyBytesToJS(ua, rs.chunkBuf[:n])
|
|
||||||
controller.Call("enqueue", ua)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user