@cryptotaxi247 / kubo / commits / ead64854e

cmd/pubsub: fix pubsub peers format brakage

License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>

Jakub Sztandera committed Mar 16, 2018 at 14:53 UTC ead64854e65b3324822a9ab01b9fa43ec6710c3c
1 file changed +28 -4
core/commands/pubsub.go
+28 -4
@@ -6,10 +6,12 @@ import (
6 "fmt"
7 "io"
8 "net/http"
9 + "sort"
10 "sync"
11 "time"
12
13 core "github.com/ipfs/go-ipfs/core"
14 + e "github.com/ipfs/go-ipfs/core/commands/e"
15
16 floodsub "gx/ipfs/QmSFihvoND3eDaAYRCeLgLPt62yCPgMZs1NSZmKFEtJQQw/go-libp2p-floodsub"
17 pstore "gx/ipfs/QmXauCuJzmzapetmC6W4TuDJLL1yFFrVzSHoWv8YdbmnxH/go-libp2p-peerstore"
@@ -271,6 +273,23 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
273 cmds.EmitOnce(res, stringList{n.Floodsub.GetTopics()})
274 },
275 Type: stringList{},
276 + Encoders: cmds.EncoderMap{
277 + cmds.Text: cmds.MakeEncoder(stringListEncoder),
278 + },
279 +}
280 +
281 +func stringListEncoder(req *cmds.Request, w io.Writer, v interface{}) error {
282 + list, ok := v.(*stringList)
283 + if !ok {
284 + return e.TypeErr(list, v)
285 + }
286 + for _, str := range list.Strings {
287 + _, err := fmt.Fprintf(w, "%s\n", str)
288 + if err != nil {
289 + return err
290 + }
291 + }
292 + return nil
293 }
294
295 var PubsubPeersCmd = &cmds.Command{
@@ -313,12 +332,17 @@ To use, the daemon must be run with '--enable-pubsub-experiment'.
332 topic = req.Arguments[0]
333 }
334
316 - for _, peer := range n.Floodsub.ListPeers(topic) {
317 - res.Emit(peer.Pretty())
335 + peers := n.Floodsub.ListPeers(topic)
336 + list := &stringList{make([]string, 0, len(peers))}
337 +
338 + for _, peer := range peers {
339 + list.Strings = append(list.Strings, peer.Pretty())
340 }
341 + sort.Strings(list.Strings)
342 + cmds.EmitOnce(res, list)
343 },
320 - Type: "",
344 + Type: stringList{},
345 Encoders: cmds.EncoderMap{
322 - cmds.Text: cmds.Encoders[cmds.TextNewline],
346 + cmds.Text: cmds.MakeEncoder(stringListEncoder),
347 },
348 }