forked from quic-go/quic-go
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.
37 lines
1.0 KiB
Go
37 lines
1.0 KiB
Go
package quic
|
|
|
|
import (
|
|
"net"
|
|
|
|
"github.com/quic-go/quic-go/internal/protocol"
|
|
"github.com/quic-go/quic-go/internal/utils"
|
|
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Closed local connection", func() {
|
|
It("tells its perspective", func() {
|
|
conn := newClosedLocalConn(nil, protocol.PerspectiveClient, utils.DefaultLogger)
|
|
Expect(conn.getPerspective()).To(Equal(protocol.PerspectiveClient))
|
|
})
|
|
|
|
It("repeats the packet containing the CONNECTION_CLOSE frame", func() {
|
|
written := make(chan net.Addr, 1)
|
|
conn := newClosedLocalConn(
|
|
func(addr net.Addr, _ packetInfo) { written <- addr },
|
|
protocol.PerspectiveClient,
|
|
utils.DefaultLogger,
|
|
)
|
|
addr := &net.UDPAddr{IP: net.IPv4(127, 1, 2, 3), Port: 1337}
|
|
for i := 1; i <= 20; i++ {
|
|
conn.handlePacket(receivedPacket{remoteAddr: addr})
|
|
if i == 1 || i == 2 || i == 4 || i == 8 || i == 16 {
|
|
Expect(written).To(Receive(Equal(addr))) // receive the CONNECTION_CLOSE
|
|
} else {
|
|
Expect(written).ToNot(Receive())
|
|
}
|
|
}
|
|
})
|
|
})
|