Skip to content

Commit a9c2b7e

Browse files
algorandskiycce
andauthored
p2p: do not register closing peer (algorand#6086)
Co-authored-by: cce <51567+cce@users.noreply.github.com>
1 parent edda2ee commit a9c2b7e

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

catchup/universalFetcher_test.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ func TestRequestBlockBytesErrors(t *testing.T) {
204204
cancel()
205205
_, _, _, err = fetcher.fetchBlock(ctx, next, up)
206206
var wrfe errWsFetcherRequestFailed
207-
require.True(t, errors.As(err, &wrfe), "unexpected err: %w", wrfe)
207+
require.ErrorAs(t, err, &wrfe)
208208
require.Equal(t, "context canceled", err.(errWsFetcherRequestFailed).cause)
209209

210210
ctx = context.Background()
@@ -213,14 +213,14 @@ func TestRequestBlockBytesErrors(t *testing.T) {
213213
up = makeTestUnicastPeerWithResponseOverride(net, t, &responseOverride)
214214

215215
_, _, _, err = fetcher.fetchBlock(ctx, next, up)
216-
require.True(t, errors.As(err, &wrfe))
216+
require.ErrorAs(t, err, &wrfe)
217217
require.Equal(t, "Cert data not found", err.(errWsFetcherRequestFailed).cause)
218218

219219
responseOverride = network.Response{Topics: network.Topics{network.MakeTopic(rpcs.CertDataKey, make([]byte, 0))}}
220220
up = makeTestUnicastPeerWithResponseOverride(net, t, &responseOverride)
221221

222222
_, _, _, err = fetcher.fetchBlock(ctx, next, up)
223-
require.True(t, errors.As(err, &wrfe))
223+
require.ErrorAs(t, err, &wrfe)
224224
require.Equal(t, "Block data not found", err.(errWsFetcherRequestFailed).cause)
225225
}
226226

@@ -240,7 +240,6 @@ func (thh *TestHTTPHandler) ServeHTTP(response http.ResponseWriter, request *htt
240240
bytes = make([]byte, fetcherMaxBlockBytes+1)
241241
}
242242
response.Write(bytes)
243-
return
244243
}
245244

246245
// TestGetBlockBytesHTTPErrors tests the errors reported from getblockBytes for http peer
@@ -264,25 +263,25 @@ func TestGetBlockBytesHTTPErrors(t *testing.T) {
264263
ls.status = http.StatusBadRequest
265264
_, _, _, err := fetcher.fetchBlock(context.Background(), 1, net.GetPeers()[0])
266265
var hre errHTTPResponse
267-
require.True(t, errors.As(err, &hre))
266+
require.ErrorAs(t, err, &hre)
268267
require.Equal(t, "Response body '\x00'", err.(errHTTPResponse).cause)
269268

270269
ls.exceedLimit = true
271270
_, _, _, err = fetcher.fetchBlock(context.Background(), 1, net.GetPeers()[0])
272-
require.True(t, errors.As(err, &hre))
271+
require.ErrorAs(t, err, &hre)
273272
require.Equal(t, "read limit exceeded", err.(errHTTPResponse).cause)
274273

275274
ls.status = http.StatusOK
276275
ls.content = append(ls.content, "undefined")
277276
_, _, _, err = fetcher.fetchBlock(context.Background(), 1, net.GetPeers()[0])
278277
var cte errHTTPResponseContentType
279-
require.True(t, errors.As(err, &cte))
278+
require.ErrorAs(t, err, &cte)
280279
require.Equal(t, "undefined", err.(errHTTPResponseContentType).contentType)
281280

282281
ls.status = http.StatusOK
283282
ls.content = append(ls.content, "undefined2")
284283
_, _, _, err = fetcher.fetchBlock(context.Background(), 1, net.GetPeers()[0])
285-
require.True(t, errors.As(err, &cte))
284+
require.ErrorAs(t, err, &cte)
286285
require.Equal(t, 2, err.(errHTTPResponseContentType).contentTypeCount)
287286
}
288287

network/p2pNetwork.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -808,6 +808,12 @@ func (n *P2PNetwork) wsStreamHandler(ctx context.Context, p2pPeer peer.ID, strea
808808

809809
wsp.init(n.config, outgoingMessagesBufferSize)
810810
n.wsPeersLock.Lock()
811+
if wsp.didSignalClose.Load() == 1 {
812+
networkPeerAlreadyClosed.Inc(nil)
813+
n.log.Debugf("peer closing %s", addr)
814+
n.wsPeersLock.Unlock()
815+
return
816+
}
811817
n.wsPeers[p2pPeer] = wsp
812818
n.wsPeersToIDs[wsp] = p2pPeer
813819
n.wsPeersLock.Unlock()

0 commit comments

Comments
 (0)