Forget pending frames when stream is closed (e.g. RST)
Also, re-use writeQueue structs and their slices to make less garbage.
diff --git a/server.go b/server.go
index f7f146b..f659094 100644
--- a/server.go
+++ b/server.go
@@ -882,7 +882,6 @@
if ok {
st.gotReset = true
sc.closeStream(st, StreamError{f.StreamID, f.ErrCode})
- // XXX TODO drain writeSched for that stream
}
return nil
}
@@ -899,6 +898,7 @@
p.Close(err)
}
st.cw.Close() // signals Handler's CloseNotifier, unblocks writes, etc
+ sc.writeSched.forgetStream(st.id)
}
func (sc *serverConn) processSettings(f *SettingsFrame) error {