http3: check response writer for http.ResponseController methods (#5071)

This commit is contained in:
Marten Seemann
2025-04-22 19:37:26 +08:00
committed by GitHub
parent 89d9984156
commit ad0ffcbd37
2 changed files with 7 additions and 6 deletions

View File

@@ -57,6 +57,13 @@ var (
_ http.Flusher = &responseWriter{} _ http.Flusher = &responseWriter{}
_ Hijacker = &responseWriter{} _ Hijacker = &responseWriter{}
_ HTTPStreamer = &responseWriter{} _ HTTPStreamer = &responseWriter{}
// make sure that we implement (some of the) methods used by the http.ResponseController
_ interface {
SetReadDeadline(time.Time) error
SetWriteDeadline(time.Time) error
Flush()
FlushError() error
} = &responseWriter{}
) )
func newResponseWriter(str *stream, conn Connection, isHead bool, logger *slog.Logger) *responseWriter { func newResponseWriter(str *stream, conn Connection, isHead bool, logger *slog.Logger) *responseWriter {

View File

@@ -4,7 +4,6 @@ import (
"bytes" "bytes"
"io" "io"
"net/http" "net/http"
"time"
"github.com/quic-go/qpack" "github.com/quic-go/qpack"
mockquic "github.com/quic-go/quic-go/internal/mocks/quic" mockquic "github.com/quic-go/quic-go/internal/mocks/quic"
@@ -165,11 +164,6 @@ var _ = Describe("Response Writer", func() {
Expect(fields).To(HaveKeyWithValue("content-type", []string{"text/html; charset=utf-8"})) Expect(fields).To(HaveKeyWithValue("content-type", []string{"text/html; charset=utf-8"}))
}) })
It(`is compatible with "net/http".ResponseController`, func() {
Expect(rw.SetReadDeadline(time.Now().Add(1 * time.Second))).To(BeNil())
Expect(rw.SetWriteDeadline(time.Now().Add(1 * time.Second))).To(BeNil())
})
It(`checks Content-Length header`, func() { It(`checks Content-Length header`, func() {
rw.Header().Set("Content-Length", "6") rw.Header().Set("Content-Length", "6")
n, err := rw.Write([]byte("foobar")) n, err := rw.Write([]byte("foobar"))