From 57d9c8e78ec4e0cbb9df1bac8766209bb88f2881 Mon Sep 17 00:00:00 2001 From: "Lawrence, Rendall" Date: Thu, 14 Apr 2022 01:52:52 +0300 Subject: [PATCH] clear store error in responseHook if ErrResourceDoesNotExist appear --- middleware/hooks.go | 3 ++- storage/memory/storage.go | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/middleware/hooks.go b/middleware/hooks.go index 778261c..961b8b1 100644 --- a/middleware/hooks.go +++ b/middleware/hooks.go @@ -50,7 +50,7 @@ func (h *swarmInteractionHook) HandleAnnounce(ctx context.Context, req *bittorre err = h.store.GraduateLeecher(req.InfoHash, req.Peer) return ctx, err case req.Left == 0: - // Completed events will also have Key == 0, but by making this + // Completed events will also have Left == 0, but by making this // an extra case we can treat "old" seeders differently from // graduating leechers. (Calling PutSeeder is probably faster // than calling GraduateLeecher.) @@ -110,6 +110,7 @@ func (h *responseHook) appendPeers(req *bittorrent.AnnounceRequest, resp *bittor if err != nil && !errors.Is(err, storage.ErrResourceDoesNotExist) { return err } + err = nil // Some clients expect a minimum of their own peer representation returned to // them if they are the only peer in a swarm. diff --git a/storage/memory/storage.go b/storage/memory/storage.go index 815ad2d..54795b7 100644 --- a/storage/memory/storage.go +++ b/storage/memory/storage.go @@ -611,7 +611,9 @@ func (ps *store) collectGarbage(cutoff time.Time) error { func (ps *store) Stop() stop.Result { c := make(stop.Channel) go func() { - close(ps.closed) + if ps.closed != nil { + close(ps.closed) + } ps.wg.Wait() // Explicitly deallocate our storage.