From 953b610470044bd332522b346e4881b8957c2050 Mon Sep 17 00:00:00 2001
From: Steven Allen <steven@stebalien.com>
Date: Sun, 3 Dec 2017 18:53:02 -0800
Subject: [PATCH] add node to dagserv under lock

Otherwise, we could run a GC between adding and pinning.

License: MIT
Signed-off-by: Steven Allen <steven@stebalien.com>
---
 pin/pin.go | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/pin/pin.go b/pin/pin.go
index 4faaea6f7..0e55963b3 100644
--- a/pin/pin.go
+++ b/pin/pin.go
@@ -172,7 +172,10 @@ func NewPinner(dstore ds.Datastore, serv, internal mdag.DAGService) Pinner {
 func (p *pinner) Pin(ctx context.Context, node node.Node, recurse bool) error {
 	p.lock.Lock()
 	defer p.lock.Unlock()
-	c := node.Cid()
+	c, err := p.dserv.Add(node)
+	if err != nil {
+		return err
+	}
 
 	if recurse {
 		if p.recursePin.Has(c) {
-- 
GitLab