diff --git a/p2p/net/swarm/swarm.go b/p2p/net/swarm/swarm.go index 52fac831c4..b5ca654462 100644 --- a/p2p/net/swarm/swarm.go +++ b/p2p/net/swarm/swarm.go @@ -385,12 +385,7 @@ func (s *Swarm) addConn(tc transport.CapableConn, dir network.Direction) (*Conn, // If we do this in the Upgrader, we will not be able to do this. if s.gater != nil { if allow, _ := s.gater.InterceptUpgraded(c); !allow { - var err error - if tcc, ok := tc.(network.CloseWithErrorer); ok { - err = tcc.CloseWithError(network.ConnGated) - } else { - err = tc.Close() - } + err := tc.CloseWithError(network.ConnGated) if err != nil { log.Warnf("failed to close connection with peer %s and addr %s; err: %s", p, addr, err) } @@ -852,10 +847,7 @@ func (c *connWithMetrics) Close() error { func (c *connWithMetrics) CloseWithError(errCode network.ConnErrorCode) error { c.once.Do(func() { c.metricsTracer.ClosedConnection(c.dir, time.Since(c.opened), c.ConnState(), c.LocalMultiaddr()) - if ce, ok := c.CapableConn.(network.CloseWithErrorer); ok { - c.closeErr = ce.CloseWithError(errCode) - } - c.closeErr = c.CapableConn.Close() + c.closeErr = c.CapableConn.CloseWithError(errCode) }) return c.closeErr } diff --git a/p2p/net/swarm/swarm_conn.go b/p2p/net/swarm/swarm_conn.go index 38a7355128..1d6cf96b4e 100644 --- a/p2p/net/swarm/swarm_conn.go +++ b/p2p/net/swarm/swarm_conn.go @@ -81,11 +81,7 @@ func (c *Conn) doClose(errCode network.ConnErrorCode) { c.streams.Unlock() if errCode != 0 { - if ce, ok := c.conn.(network.CloseWithErrorer); ok { - c.err = ce.CloseWithError(errCode) - } else { - c.err = c.conn.Close() - } + c.err = c.conn.CloseWithError(errCode) } else { c.err = c.conn.Close() } diff --git a/p2p/net/upgrader/conn.go b/p2p/net/upgrader/conn.go index cdeab3b07d..2cc4dcfbb6 100644 --- a/p2p/net/upgrader/conn.go +++ b/p2p/net/upgrader/conn.go @@ -66,8 +66,5 @@ func (t *transportConn) ConnState() network.ConnectionState { func (t *transportConn) CloseWithError(errCode network.ConnErrorCode) error { defer t.scope.Done() - if ce, ok := t.MuxedConn.(network.CloseWithErrorer); ok { - return ce.CloseWithError(errCode) - } - return t.Close() + return t.MuxedConn.CloseWithError(errCode) } diff --git a/p2p/net/upgrader/listener.go b/p2p/net/upgrader/listener.go index f2230e5619..55783f0154 100644 --- a/p2p/net/upgrader/listener.go +++ b/p2p/net/upgrader/listener.go @@ -162,11 +162,7 @@ func (l *listener) handleIncoming() { // if we stop accepting connections for some reason, // we'll eventually close all the open ones // instead of hanging onto them. - if cc, ok := conn.(network.CloseWithErrorer); ok { - cc.CloseWithError(network.ConnRateLimited) - } else { - conn.Close() - } + conn.CloseWithError(network.ConnRateLimited) } }() } diff --git a/p2p/transport/quic/virtuallistener.go b/p2p/transport/quic/virtuallistener.go index ceee530b7d..5b23e4c507 100644 --- a/p2p/transport/quic/virtuallistener.go +++ b/p2p/transport/quic/virtuallistener.go @@ -143,7 +143,7 @@ func (r *acceptLoopRunner) innerAccept(l *listener, expectedVersion quic.Version select { case ch <- acceptVal{conn: conn}: default: - conn.(network.CloseWithErrorer).CloseWithError(network.ConnRateLimited) + conn.CloseWithError(network.ConnRateLimited) // accept queue filled up, drop the connection log.Warn("Accept queue filled. Dropping connection.") } diff --git a/p2p/transport/websocket/conn.go b/p2p/transport/websocket/conn.go index eca2262c58..ce51611703 100644 --- a/p2p/transport/websocket/conn.go +++ b/p2p/transport/websocket/conn.go @@ -203,11 +203,3 @@ func (c *capableConn) ConnState() network.ConnectionState { cs.Transport = "websocket" return cs } - -// CloseWithError implements network.CloseWithErrorer -func (c *capableConn) CloseWithError(errCode network.ConnErrorCode) error { - if ce, ok := c.CapableConn.(network.CloseWithErrorer); ok { - return ce.CloseWithError(errCode) - } - return c.Close() -}