diff --git a/namesys/publisher.go b/namesys/publisher.go index 981814f52..67fcb26ef 100644 --- a/namesys/publisher.go +++ b/namesys/publisher.go @@ -146,12 +146,22 @@ func PutRecordToRouting(ctx context.Context, k ci.PrivKey, value path.Path, seqn entry.Ttl = proto.Uint64(uint64(ttl.Nanoseconds())) } - err = PublishEntry(ctx, r, ipnskey, entry) + errs := make(chan error) + + go func() { + errs <- PublishEntry(ctx, r, ipnskey, entry) + }() + + go func() { + errs <- PublishPublicKey(ctx, r, namekey, k.GetPublic()) + }() + + err = waitOnErrChan(ctx, errs) if err != nil { return err } - err = PublishPublicKey(ctx, r, namekey, k.GetPublic()) + err = waitOnErrChan(ctx, errs) if err != nil { return err } @@ -159,6 +169,19 @@ func PutRecordToRouting(ctx context.Context, k ci.PrivKey, value path.Path, seqn return nil } +func waitOnErrChan(ctx context.Context, errs chan error) error { + select { + case err := <-errs: + if err != nil { + return err + } + case <-ctx.Done(): + return ctx.Err() + } + + return nil +} + func PublishPublicKey(ctx context.Context, r routing.IpfsRouting, k key.Key, pubk ci.PubKey) error { log.Debugf("Storing pubkey at: %s", k) pkbytes, err := pubk.Bytes()