lib/connections: Expose SetReadBuffer on conn passed to quic (ref #7417) (#7432)

This commit is contained in:
Simon Frei 2021-03-05 08:06:37 +01:00 committed by GitHub
parent 83fcb49894
commit 767e1c6f58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 3 deletions

View File

@ -90,13 +90,17 @@ func (t *quicListener) serve(ctx context.Context) error {
svc, conn := stun.New(t.cfg, t, packetConn)
defer func() { _ = conn.Close() }()
wrapped := &stunConnQUICWrapper{
PacketConn: conn,
underlying: packetConn.(*net.UDPConn),
}
go svc.Serve(ctx)
registry.Register(t.uri.Scheme, conn)
defer registry.Unregister(t.uri.Scheme, conn)
registry.Register(t.uri.Scheme, wrapped)
defer registry.Unregister(t.uri.Scheme, wrapped)
listener, err := quic.Listen(conn, t.tlsCfg, quicConfig)
listener, err := quic.Listen(wrapped, t.tlsCfg, quicConfig)
if err != nil {
l.Infoln("Listen (BEP/quic):", err)
return err
@ -213,3 +217,13 @@ func (f *quicListenerFactory) New(uri *url.URL, cfg config.Wrapper, tlsCfg *tls.
func (quicListenerFactory) Enabled(cfg config.Configuration) bool {
return true
}
type stunConnQUICWrapper struct {
net.PacketConn
underlying *net.UDPConn
}
// SetReadBuffer is required by QUIC.
func (s *stunConnQUICWrapper) SetReadBuffer(size int) error {
return s.underlying.SetReadBuffer(size)
}