mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-21 11:44:16 +08:00
commands: fix a bunch of tiny commands-lib issues
* Always check errors returned by emit. Otherwise, we may not notice when the client goes away. * Make sure to use EmitOnce instead of Emit when appropriate. Otherwise, we break javascript. (thanks Magik6k for finding this before we cut the release...) License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>
This commit is contained in:
@ -188,7 +188,7 @@ format.
|
|||||||
}
|
}
|
||||||
out = final
|
out = final
|
||||||
}
|
}
|
||||||
return res.Emit(&out)
|
return cmds.EmitOnce(res, &out)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,7 +219,7 @@ var DagResolveCmd = &cmds.Command{
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return res.Emit(&ResolveOutput{
|
return cmds.EmitOnce(res, &ResolveOutput{
|
||||||
Cid: lastCid,
|
Cid: lastCid,
|
||||||
RemPath: path.Join(rem),
|
RemPath: path.Join(rem),
|
||||||
})
|
})
|
||||||
|
@ -77,7 +77,7 @@ The resolver can recursively resolve:
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return res.Emit(&ncmd.ResolvedPath{Path: output})
|
return cmds.EmitOnce(res, &ncmd.ResolvedPath{Path: output})
|
||||||
},
|
},
|
||||||
Encoders: cmds.EncoderMap{
|
Encoders: cmds.EncoderMap{
|
||||||
cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *ncmd.ResolvedPath) error {
|
cmds.Text: cmds.MakeTypedEncoder(func(req *cmds.Request, w io.Writer, out *ncmd.ResolvedPath) error {
|
||||||
|
@ -105,12 +105,14 @@ This command outputs data in the following encodings:
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
res.Emit(&pubsubMessage{
|
if err := res.Emit(&pubsubMessage{
|
||||||
Data: msg.Data(),
|
Data: msg.Data(),
|
||||||
From: []byte(msg.From()),
|
From: []byte(msg.From()),
|
||||||
Seqno: msg.Seq(),
|
Seqno: msg.Seq(),
|
||||||
TopicIDs: msg.Topics(),
|
TopicIDs: msg.Topics(),
|
||||||
})
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Encoders: cmds.EncoderMap{
|
Encoders: cmds.EncoderMap{
|
||||||
|
@ -127,14 +127,20 @@ Example:
|
|||||||
for {
|
for {
|
||||||
if pfound {
|
if pfound {
|
||||||
stats := nd.Reporter.GetBandwidthForPeer(pid)
|
stats := nd.Reporter.GetBandwidthForPeer(pid)
|
||||||
res.Emit(&stats)
|
if err := res.Emit(&stats); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
} else if tfound {
|
} else if tfound {
|
||||||
protoId := protocol.ID(tstr)
|
protoId := protocol.ID(tstr)
|
||||||
stats := nd.Reporter.GetBandwidthForProtocol(protoId)
|
stats := nd.Reporter.GetBandwidthForProtocol(protoId)
|
||||||
res.Emit(&stats)
|
if err := res.Emit(&stats); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
totals := nd.Reporter.GetBandwidthTotals()
|
totals := nd.Reporter.GetBandwidthTotals()
|
||||||
res.Emit(&totals)
|
if err := res.Emit(&totals); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if !doPoll {
|
if !doPoll {
|
||||||
return nil
|
return nil
|
||||||
@ -142,7 +148,7 @@ Example:
|
|||||||
select {
|
select {
|
||||||
case <-time.After(interval):
|
case <-time.After(interval):
|
||||||
case <-req.Context.Done():
|
case <-req.Context.Done():
|
||||||
return nil
|
return req.Context.Err()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -57,7 +57,7 @@ represent it.
|
|||||||
c := node.Cid()
|
c := node.Cid()
|
||||||
|
|
||||||
fi.FileName()
|
fi.FileName()
|
||||||
return res.Emit(&coreiface.AddEvent{
|
return cmds.EmitOnce(res, &coreiface.AddEvent{
|
||||||
Name: fi.FileName(),
|
Name: fi.FileName(),
|
||||||
Hash: c.String(),
|
Hash: c.String(),
|
||||||
})
|
})
|
||||||
|
@ -40,7 +40,7 @@ var VersionCmd = &cmds.Command{
|
|||||||
cmdkit.BoolOption(versionAllOptionName, "Show all version information"),
|
cmdkit.BoolOption(versionAllOptionName, "Show all version information"),
|
||||||
},
|
},
|
||||||
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
|
Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
|
||||||
return res.Emit(&VersionOutput{
|
return cmds.EmitOnce(res, &VersionOutput{
|
||||||
Version: version.CurrentVersionNumber,
|
Version: version.CurrentVersionNumber,
|
||||||
Commit: version.CurrentCommit,
|
Commit: version.CurrentCommit,
|
||||||
Repo: fmt.Sprint(fsrepo.RepoVersion),
|
Repo: fmt.Sprint(fsrepo.RepoVersion),
|
||||||
|
Reference in New Issue
Block a user