Skip to content

Commit 836e84b

Browse files
authored
Add recover() to H2 server's flushWriter.Write()
Fixes #1748
1 parent 4a0b45d commit 836e84b

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

transport/internet/http/dialer.go

+3-5
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ type WaitReadCloser struct {
204204
func (w *WaitReadCloser) Set(rc io.ReadCloser) {
205205
w.ReadCloser = rc
206206
defer func() {
207-
if err := recover(); err != nil {
207+
if recover() != nil {
208208
rc.Close()
209209
}
210210
}()
@@ -225,10 +225,8 @@ func (w *WaitReadCloser) Close() error {
225225
return w.ReadCloser.Close()
226226
}
227227
defer func() {
228-
if err := recover(); err != nil {
229-
if w.ReadCloser != nil {
230-
w.ReadCloser.Close()
231-
}
228+
if recover() != nil && w.ReadCloser != nil {
229+
w.ReadCloser.Close()
232230
}
233231
}()
234232
close(w.Wait)

transport/internet/http/hub.go

+7
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@ func (fw flushWriter) Write(p []byte) (n int, err error) {
5151
return 0, io.ErrClosedPipe
5252
}
5353

54+
defer func() {
55+
if recover() != nil {
56+
fw.d.Close()
57+
err = io.ErrClosedPipe
58+
}
59+
}()
60+
5461
n, err = fw.w.Write(p)
5562
if f, ok := fw.w.(http.Flusher); ok && err == nil {
5663
f.Flush()

0 commit comments

Comments
 (0)