* use require in benchmark tests
* translate the QLOGDIR test
* translate handshake tests
* translate the handshake RTT tests
* translate the early data test
* translate the MTU tests
* translate the key update test
* translate the stateless reset tests
* translate the packetization test
* translate the close test
* translate the resumption test
* translate the tracer test
* translate the connection ID length test
* translate the RTT tests
* translate the multiplexing tests
* translate the drop tests
* translate the handshake drop tests
* translate the 0-RTT tests
* translate the hotswap test
* translate the stream test
* translate the unidirectional stream test
* translate the timeout tests
* translate the MITM test
* rewrite the datagram tests
* translate the cancellation tests
* translate the deadline tests
* translate the test helpers
* pass a context to Transport.ConnContext
This context is cancelled when the QUIC connection is closed, or when
the QUIC handshake fails. This allows the application to easily build
and garbage collect a map of active connections.
* correctly handle fresh contexts returned from ConnContext
* use Transport.VerifySourceAddress to control the Retry Mechanism
This can be used to rate-limit handshakes originating from unverified
source addresses. Rate-limiting for handshakes can be implemented using
the GetConfigForClient callback on the Config.
* pass the remote address to Transport.VerifySourceAddress
* add Transport config options to limit the number of handshakes
* fix accounting for failed handshakes
* increase handshake limits, improve documentation
So far, we used Connection.destroy, which destroys a connection without
sending out a CONNECTION_CLOSE frame. This is useful (for example) when
receiving a stateless reset, but it's not what we want when the server
refuses an incoming connection. In this case, we want to send out a
packet with a CONNECTION_CLOSE frame to inform the client that the
connection attempt is being rejected.
There's no need to have a dedicated shutdown method, as the use case
(shutting down an outgoing connection attempt on context cancellation)
can be achieved by using Connection.destroy.
There is no good reason to manually set the validity period for Retry
tokens. Retry tokens are only valid on a single connection during the
handshake, so it makes sense to limit their validity to the configured
handshake timeout.
We should provide safe defaults. Since we implement the 3x amplification
limit, disabling address validation is not unsafe, and will save 1 RTT
for every handshake for applications that don't explicitely configure
Retries.