@cryptotaxi247 / kubo / commits / e8f48f1a1

put pubkey and ipns entry to dht in parallel

License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>

Jeromy committed Feb 10, 2016 at 17:03 UTC e8f48f1a1e6e125750aa24c4eb238c251b91698b
1 file changed +25 -2
namesys/publisher.go
+25 -2
@@ -146,12 +146,22 @@ func PutRecordToRouting(ctx context.Context, k ci.PrivKey, value path.Path, seqn
146 entry.Ttl = proto.Uint64(uint64(ttl.Nanoseconds()))
147 }
148
149 - err = PublishEntry(ctx, r, ipnskey, entry)
149 + errs := make(chan error)
150 +
151 + go func() {
152 + errs <- PublishEntry(ctx, r, ipnskey, entry)
153 + }()
154 +
155 + go func() {
156 + errs <- PublishPublicKey(ctx, r, namekey, k.GetPublic())
157 + }()
158 +
159 + err = waitOnErrChan(ctx, errs)
160 if err != nil {
161 return err
162 }
163
154 - err = PublishPublicKey(ctx, r, namekey, k.GetPublic())
164 + err = waitOnErrChan(ctx, errs)
165 if err != nil {
166 return err
167 }
@@ -159,6 +169,19 @@ func PutRecordToRouting(ctx context.Context, k ci.PrivKey, value path.Path, seqn
169 return nil
170 }
171
172 +func waitOnErrChan(ctx context.Context, errs chan error) error {
173 + select {
174 + case err := <-errs:
175 + if err != nil {
176 + return err
177 + }
178 + case <-ctx.Done():
179 + return ctx.Err()
180 + }
181 +
182 + return nil
183 +}
184 +
185 func PublishPublicKey(ctx context.Context, r routing.IpfsRouting, k key.Key, pubk ci.PubKey) error {
186 log.Debugf("Storing pubkey at: %s", k)
187 pkbytes, err := pubk.Bytes()