Skip to content

Commit

Permalink
Use own pointer to packetConn
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcoPolo authored and sukunrt committed Jul 12, 2023
1 parent 40011e7 commit 8560e4e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
4 changes: 2 additions & 2 deletions p2p/transport/quicreuse/connmgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ func (c *ConnManager) transportForListen(network string, laddr *net.UDPAddr) (re
if err != nil {
return nil, err
}
return &singleOwnerTransport{tr: quic.Transport{Conn: conn, StatelessResetKey: &c.srk}}, nil
return &singleOwnerTransport{tr: quic.Transport{Conn: conn, StatelessResetKey: &c.srk}, packetConn: conn}, nil
}

func (c *ConnManager) DialQUIC(ctx context.Context, raddr ma.Multiaddr, tlsConf *tls.Config, allowWindowIncrease func(conn quic.Connection, delta uint64) bool) (quic.Connection, error) {
Expand Down Expand Up @@ -221,7 +221,7 @@ func (c *ConnManager) TransportForDial(network string, raddr *net.UDPAddr) (refC
if err != nil {
return nil, err
}
return &singleOwnerTransport{tr: quic.Transport{Conn: conn, StatelessResetKey: &c.srk}}, nil
return &singleOwnerTransport{tr: quic.Transport{Conn: conn, StatelessResetKey: &c.srk}, packetConn: conn}, nil
}

func (c *ConnManager) Protocols() []int {
Expand Down
14 changes: 10 additions & 4 deletions p2p/transport/quicreuse/reuse.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ type refCountedQuicTransport interface {

type singleOwnerTransport struct {
tr quic.Transport

// Used to write packets directly around QUIC.
packetConn net.PacketConn
}

func (c *singleOwnerTransport) IncreaseCount() {}
Expand All @@ -41,7 +44,7 @@ func (c *singleOwnerTransport) LocalAddr() net.Addr {

func (c *singleOwnerTransport) WriteTo(b []byte, addr net.Addr) (int, error) {
// Safe because we called quic.OptimizeConn ourselves.
return c.tr.Conn.WriteTo(b, addr)
return c.packetConn.WriteTo(b, addr)
}

func (c *singleOwnerTransport) Close() error {
Expand All @@ -57,6 +60,9 @@ var (
type refcountedTransport struct {
tr quic.Transport

// Used to write packets directly around QUIC.
packetConn net.PacketConn

mutex sync.Mutex
refCount int
unusedSince time.Time
Expand All @@ -79,7 +85,7 @@ func (c *refcountedTransport) Close() error {

func (c *refcountedTransport) WriteTo(b []byte, addr net.Addr) (int, error) {
// Safe because we called quic.OptimizeConn ourselves.
return c.tr.Conn.WriteTo(b, addr)
return c.packetConn.WriteTo(b, addr)
}

func (c *refcountedTransport) LocalAddr() net.Addr {
Expand Down Expand Up @@ -265,7 +271,7 @@ func (r *reuse) transportForDialLocked(network string, source *net.IP) (*refcoun
Conn: conn,
StatelessResetKey: r.statelessResetKey,
Tracer: r.metricsTracer,
}}
}, packetConn: conn}
r.globalDialers[conn.LocalAddr().(*net.UDPAddr).Port] = rconn
return rconn, nil
}
Expand Down Expand Up @@ -313,7 +319,7 @@ func (r *reuse) TransportForListen(network string, laddr *net.UDPAddr) (*refcoun
Conn: conn,
StatelessResetKey: r.statelessResetKey,
Tracer: r.metricsTracer,
}}
}, packetConn: conn}

tr.IncreaseCount()

Expand Down

0 comments on commit 8560e4e

Please sign in to comment.