If the user provides a quic.Config, we shouldn't modify it. Instead, we
should return an error if the user enables HTTP Datagrams but fails to
enable datagrams on the QUIC layer.
* Fix protocol
The default value should be "HTTP/3.0".
* Reject normal request with :protocol header
The :protocol pseudo header is only defined for
Extended Connect requests (RFC 9220).
* save one branch check
* Fix review issue
* Add ConnContext to http3.Server
ConnContext can be used to modify the context used by a new http
Request.
* Make linter happy
* Add nil check and integration test
* Add the ServerContextKey check to the ConnContext func
* Update integrationtests/self/http_test.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* Update http3/server.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* http3: typo in ListenAndServe docs
Also, partially prevent a goroutine leak on an error from one of the
listeners.
* http3: improve documentation for ListenAndServe
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* interrupt the stream when a panick happened
* move the declaration of errPanicked
* check what's read is a prefix of what's written
* check errPanicked
* use MatchError instead of Equal
* use channel to notify the response has been received
* http3: add remote address to request context
Add the remote address of the underlying packet connection to the
HTTP request context. This is useful for applications that need access
to the actual remote address (wrapped in a net.Addr) rather than just
its string representation.
Fixes#4198
* add an integration test to the self test suite.
I was not sure how deep we want to go to assure the right value is set.
For now, it asserts that a net.Addr is present in the context.
Due to the dynamic nature of the requests, it is a bit harder to know
exactly how the remote address will look like. IPv4 vs IPv6, random high
port. I think it is fine to only assert that the value is present.
* http3: HEAD method should not have a body
* add tests
* Update http3/server.go
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* ruduce the size of responseWriter
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* automatically add date header if not already set
* improve comment for Date header
---------
Co-authored-by: Marten Seemann <martenseemann@gmail.com>