forked from quic-go/quic-go
use a buffered writer for the http3 response writer
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package http3
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"io"
|
||||
"net/http"
|
||||
@@ -12,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
type responseWriter struct {
|
||||
stream io.Writer
|
||||
stream *bufio.Writer
|
||||
|
||||
header http.Header
|
||||
status int // status code passed to WriteHeader
|
||||
@@ -22,11 +23,12 @@ type responseWriter struct {
|
||||
}
|
||||
|
||||
var _ http.ResponseWriter = &responseWriter{}
|
||||
var _ http.Flusher = &responseWriter{}
|
||||
|
||||
func newResponseWriter(stream io.Writer, logger utils.Logger) *responseWriter {
|
||||
return &responseWriter{
|
||||
header: http.Header{},
|
||||
stream: stream,
|
||||
stream: bufio.NewWriter(stream),
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
@@ -79,10 +81,11 @@ func (w *responseWriter) Write(p []byte) (int, error) {
|
||||
return w.stream.Write(p)
|
||||
}
|
||||
|
||||
func (w *responseWriter) Flush() {}
|
||||
|
||||
// test that we implement http.Flusher
|
||||
var _ http.Flusher = &responseWriter{}
|
||||
func (w *responseWriter) Flush() {
|
||||
if err := w.stream.Flush(); err != nil {
|
||||
w.logger.Errorf("could not flush to stream: %s", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// copied from http2/http2.go
|
||||
// bodyAllowedForStatus reports whether a given response status code
|
||||
|
||||
Reference in New Issue
Block a user