in mux.go [150:171]
func copyFramesUntilSettingsAck(w io.Writer, r io.Reader) error {
var frameBuf bytes.Buffer
framer := http2.NewFramer(w, io.TeeReader(r, &frameBuf))
framer.SetReuseFrames()
var haveFirstSettingsACK bool
for !haveFirstSettingsACK {
f, err := framer.ReadFrame()
if err != nil {
return err
}
switch f := f.(type) {
case *http2.SettingsFrame:
if !haveFirstSettingsACK && f.IsAck() {
haveFirstSettingsACK = true
frameBuf.Truncate(frameBuf.Len() - int(f.Length) - http2FrameHeaderLength)
break
}
}
}
_, err := io.Copy(w, &frameBuf)
return err
}