Skip to content

Commit cab9ddf

Browse files
committed
ping: don't return success on failed pings
fixes #6298 License: MIT Signed-off-by: Steven Allen <[email protected]>
1 parent fdbd501 commit cab9ddf

File tree

3 files changed

+55
-36
lines changed

3 files changed

+55
-36
lines changed

core/commands/ping.go

+25-16
Original file line numberDiff line numberDiff line change
@@ -105,39 +105,48 @@ trip latency information.
105105

106106
ctx, cancel := context.WithTimeout(req.Context, kPingTimeout*time.Duration(numPings))
107107
defer cancel()
108-
pings, err := ping.Ping(ctx, n.PeerHost, pid)
109-
if err != nil {
110-
return res.Emit(&PingResult{
111-
Success: false,
112-
Text: fmt.Sprintf("Ping error: %s", err),
113-
})
114-
}
108+
pings := ping.Ping(ctx, n.PeerHost, pid)
115109

116-
var total time.Duration
110+
var (
111+
count int
112+
total time.Duration
113+
)
117114
ticker := time.NewTicker(time.Second)
118115
defer ticker.Stop()
116+
119117
for i := 0; i < numPings; i++ {
120-
t, ok := <-pings
118+
r, ok := <-pings
121119
if !ok {
122120
break
123121
}
124122

125-
if err := res.Emit(&PingResult{
126-
Success: true,
127-
Time: t,
128-
}); err != nil {
123+
if r.Error != nil {
124+
err = res.Emit(&PingResult{
125+
Success: false,
126+
Text: fmt.Sprintf("Ping error: %s", r.Error),
127+
})
128+
} else {
129+
count++
130+
total += r.RTT
131+
err = res.Emit(&PingResult{
132+
Success: true,
133+
Time: r.RTT,
134+
})
135+
}
136+
if err != nil {
129137
return err
130138
}
131139

132-
total += t
133-
134140
select {
135141
case <-ticker.C:
136142
case <-ctx.Done():
137143
return ctx.Err()
138144
}
139145
}
140-
averagems := total.Seconds() * 1000 / float64(numPings)
146+
if count == 0 {
147+
return nil
148+
}
149+
averagems := total.Seconds() * 1000 / float64(count)
141150
return res.Emit(&PingResult{
142151
Success: true,
143152
Text: fmt.Sprintf("Average latency: %.2fms", averagems),

go.mod

+8-8
Original file line numberDiff line numberDiff line change
@@ -62,20 +62,20 @@ require (
6262
github.com/jbenet/go-random v0.0.0-20190219211222-123a90aedc0c
6363
github.com/jbenet/go-random-files v0.0.0-20190219210431-31b3f20ebded
6464
github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2
65-
github.com/jbenet/goprocess v0.1.0
66-
github.com/libp2p/go-libp2p v0.0.21
65+
github.com/jbenet/goprocess v0.1.2
66+
github.com/libp2p/go-libp2p v0.0.23
6767
github.com/libp2p/go-libp2p-autonat-svc v0.0.5
68-
github.com/libp2p/go-libp2p-circuit v0.0.4
69-
github.com/libp2p/go-libp2p-connmgr v0.0.3
70-
github.com/libp2p/go-libp2p-crypto v0.0.1
71-
github.com/libp2p/go-libp2p-host v0.0.2
72-
github.com/libp2p/go-libp2p-interface-connmgr v0.0.3
68+
github.com/libp2p/go-libp2p-circuit v0.0.6
69+
github.com/libp2p/go-libp2p-connmgr v0.0.4
70+
github.com/libp2p/go-libp2p-crypto v0.0.2
71+
github.com/libp2p/go-libp2p-host v0.0.3
72+
github.com/libp2p/go-libp2p-interface-connmgr v0.0.4
7373
github.com/libp2p/go-libp2p-kad-dht v0.0.10
7474
github.com/libp2p/go-libp2p-kbucket v0.1.1
7575
github.com/libp2p/go-libp2p-loggables v0.0.1
7676
github.com/libp2p/go-libp2p-metrics v0.0.1
7777
github.com/libp2p/go-libp2p-net v0.0.2
78-
github.com/libp2p/go-libp2p-peer v0.1.0
78+
github.com/libp2p/go-libp2p-peer v0.1.1
7979
github.com/libp2p/go-libp2p-peerstore v0.0.5
8080
github.com/libp2p/go-libp2p-pnet v0.0.1
8181
github.com/libp2p/go-libp2p-protocol v0.0.1

go.sum

+22-12
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,8 @@ github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2 h1:vhC1
267267
github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs=
268268
github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8 h1:bspPhN+oKYFk5fcGNuQzp6IGzYQSenLEgH3s6jkXrWw=
269269
github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY=
270-
github.com/jbenet/goprocess v0.1.0 h1:Dyy3+CibR6zXp050l0hSrXkv9MB4uhYqJw1PF5B3PYQ=
271-
github.com/jbenet/goprocess v0.1.0/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4=
270+
github.com/jbenet/goprocess v0.1.2 h1:TfvRwwUfgT/umj/REz2B8IxAKzUEX84+xdRAQ+eF2B8=
271+
github.com/jbenet/goprocess v0.1.2/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4=
272272
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
273273
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
274274
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
@@ -305,8 +305,8 @@ github.com/libp2p/go-libp2p v0.0.2 h1:+jvgi0Zy3y4TKXJKApchCk3pCBPZf1T54z3+vKie3g
305305
github.com/libp2p/go-libp2p v0.0.2/go.mod h1:Qu8bWqFXiocPloabFGUcVG4kk94fLvfC8mWTDdFC9wE=
306306
github.com/libp2p/go-libp2p v0.0.12 h1:UbZO296s6/Cvoz4LmymvL7LrXtHkD58Xtt8Iddx/N+I=
307307
github.com/libp2p/go-libp2p v0.0.12/go.mod h1:l8kmLMc4DToz2TtA0aWEaE4/jVMALRKw8Kv2WTR0LHc=
308-
github.com/libp2p/go-libp2p v0.0.21 h1:Mc8T1G/5DsDe83/vc5wVliyiRWNVJsUowKOMLHjcJyQ=
309-
github.com/libp2p/go-libp2p v0.0.21/go.mod h1:fwhRaZJcLTSAga5HwobjX20lO2pOBx4vQSiKrZv6i/A=
308+
github.com/libp2p/go-libp2p v0.0.23 h1:r/LrjFWHVBTikzCTfNi8AG+7TilnoazAZcGq2a1IeK0=
309+
github.com/libp2p/go-libp2p v0.0.23/go.mod h1:LCZG1r7NRqnBKxrA9sU4KR7cAzze0DgL9j1GxyBFRyg=
310310
github.com/libp2p/go-libp2p-autonat v0.0.2 h1:ilo9QPzNPf1hMkqaPG55yzvhILf5ZtijstJhcii+l3s=
311311
github.com/libp2p/go-libp2p-autonat v0.0.2/go.mod h1:fs71q5Xk+pdnKU014o2iq1RhMs9/PMaG5zXRFNnIIT4=
312312
github.com/libp2p/go-libp2p-autonat v0.0.3 h1:PUD+pAx8Qs9hh+Bowzxq8RCkg/Vwrz5oCFC4peixXQk=
@@ -323,25 +323,29 @@ github.com/libp2p/go-libp2p-circuit v0.0.1 h1:DYbjyQ5ZY3QVAVYZWG4uzBQ6Wmcd1C82Bk
323323
github.com/libp2p/go-libp2p-circuit v0.0.1/go.mod h1:Dqm0s/BiV63j8EEAs8hr1H5HudqvCAeXxDyic59lCwE=
324324
github.com/libp2p/go-libp2p-circuit v0.0.4 h1:yOgEadnSVFj3e9KLBuLG+edqCImeav0VXxXvcimpOUQ=
325325
github.com/libp2p/go-libp2p-circuit v0.0.4/go.mod h1:p1cHJnB9xnX5/1vZLkXgKwmNEOQQuF/Hp+SkATXnXYk=
326+
github.com/libp2p/go-libp2p-circuit v0.0.6 h1:egD2CKFVdqnHgIHzPkM6J7m3MKZpFqoTPDfxBqQ7kRQ=
327+
github.com/libp2p/go-libp2p-circuit v0.0.6/go.mod h1:W34ISBRpoCPUeOR26xzTbLo+s3hDO9153hJCfvHzBlg=
326328
github.com/libp2p/go-libp2p-connmgr v0.0.1 h1:9KP7UbP4a6fauLw954LhTGfovhkmMwvJsIf8G4CCons=
327329
github.com/libp2p/go-libp2p-connmgr v0.0.1/go.mod h1:eUBBlbuwBBTd/eim7KV5x0fOD2UHDjSwhzmBL6miIx8=
328-
github.com/libp2p/go-libp2p-connmgr v0.0.3 h1:02yLgFXTcvnRFcBkEu5DjrHz3ttVdgjTQDhbuSdhk3w=
329-
github.com/libp2p/go-libp2p-connmgr v0.0.3/go.mod h1:pEeSX0NrJcgFxGDzvNGj5wP8x6fJWNj+MQwbtx6kZsI=
330+
github.com/libp2p/go-libp2p-connmgr v0.0.4 h1:eX42qNshgJOo/jHJHu2GHPKcUx//5t1sNy01T2mWwSc=
331+
github.com/libp2p/go-libp2p-connmgr v0.0.4/go.mod h1:C5FPJ5CPvrC+q3pNLI7PiqJeb3iB4uxaBpD/3peDGGI=
330332
github.com/libp2p/go-libp2p-crypto v0.0.1 h1:JNQd8CmoGTohO/akqrH16ewsqZpci2CbgYH/LmYl8gw=
331333
github.com/libp2p/go-libp2p-crypto v0.0.1/go.mod h1:yJkNyDmO341d5wwXxDUGO0LykUVT72ImHNUqh5D/dBE=
334+
github.com/libp2p/go-libp2p-crypto v0.0.2 h1:TTdJ4y6Uoa6NxQcuEaVkQfFRcQeCE2ReDk8Ok4I0Fyw=
335+
github.com/libp2p/go-libp2p-crypto v0.0.2/go.mod h1:eETI5OUfBnvARGOHrJz2eWNyTUxEGZnBxMcbUjfIj4I=
332336
github.com/libp2p/go-libp2p-daemon v0.0.6/go.mod h1:nkhjsjSzkF+tg6iScsTTgq9m+VfyMtXNpycYG4CFvC8=
333337
github.com/libp2p/go-libp2p-discovery v0.0.1 h1:VkjCKmJQMwpDUwtA8Qc1z3TQAHJgQ5nGQ6cdN0wQXOw=
334338
github.com/libp2p/go-libp2p-discovery v0.0.1/go.mod h1:ZkkF9xIFRLA1xCc7bstYFkd80gBGK8Fc1JqGoU2i+zI=
335339
github.com/libp2p/go-libp2p-discovery v0.0.2 h1:Rf+20nsFcCnHo4Kxvf8ofAft75+fW+cXy9FonNVyU/g=
336340
github.com/libp2p/go-libp2p-discovery v0.0.2/go.mod h1:ZkkF9xIFRLA1xCc7bstYFkd80gBGK8Fc1JqGoU2i+zI=
337341
github.com/libp2p/go-libp2p-host v0.0.1 h1:dnqusU+DheGcdxrE718kG4XgHNuL2n9eEv8Rg5zy8hQ=
338342
github.com/libp2p/go-libp2p-host v0.0.1/go.mod h1:qWd+H1yuU0m5CwzAkvbSjqKairayEHdR5MMl7Cwa7Go=
339-
github.com/libp2p/go-libp2p-host v0.0.2 h1:UnyDP7gmaUIYG3EUPnGc54K+KLFmI6V0Ozm+BQU9VQ8=
340-
github.com/libp2p/go-libp2p-host v0.0.2/go.mod h1:JACKb5geZ28rUiChzlzSFRC8XYYcLwsZq38h+a4D4Hs=
343+
github.com/libp2p/go-libp2p-host v0.0.3 h1:BB/1Z+4X0rjKP5lbQTmjEjLbDVbrcmLOlA6QDsN5/j4=
344+
github.com/libp2p/go-libp2p-host v0.0.3/go.mod h1:Y/qPyA6C8j2coYyos1dfRm0I8+nvd4TGrDGt4tA7JR8=
341345
github.com/libp2p/go-libp2p-interface-connmgr v0.0.1 h1:Q9EkNSLAOF+u90L88qmE9z/fTdjLh8OsJwGw74mkwk4=
342346
github.com/libp2p/go-libp2p-interface-connmgr v0.0.1/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k=
343-
github.com/libp2p/go-libp2p-interface-connmgr v0.0.3 h1:uN9FGH9OUJAtQ2G19F60Huu7s3TIYRBaJLUaW0PlCUo=
344-
github.com/libp2p/go-libp2p-interface-connmgr v0.0.3/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k=
347+
github.com/libp2p/go-libp2p-interface-connmgr v0.0.4 h1:/LngXETpII5qOD7YjAcQiIxhVtdAk/NQe5t9sC6BR0E=
348+
github.com/libp2p/go-libp2p-interface-connmgr v0.0.4/go.mod h1:GarlRLH0LdeWcLnYM/SaBykKFl9U5JFnbBGruAk/D5k=
345349
github.com/libp2p/go-libp2p-interface-pnet v0.0.1 h1:7GnzRrBTJHEsofi1ahFdPN9Si6skwXQE9UqR2S+Pkh8=
346350
github.com/libp2p/go-libp2p-interface-pnet v0.0.1/go.mod h1:el9jHpQAXK5dnTpKA4yfCNBZXvrzdOU75zz+C6ryp3k=
347351
github.com/libp2p/go-libp2p-kad-dht v0.0.4/go.mod h1:oaBflOQcuC8H+SVV0YN26H6AS+wcUEJyjUGV66vXuSY=
@@ -370,6 +374,8 @@ github.com/libp2p/go-libp2p-peer v0.0.1 h1:0qwAOljzYewINrU+Kndoc+1jAL7vzY/oY2Go4
370374
github.com/libp2p/go-libp2p-peer v0.0.1/go.mod h1:nXQvOBbwVqoP+T5Y5nCjeH4sP9IX/J0AMzcDUVruVoo=
371375
github.com/libp2p/go-libp2p-peer v0.1.0 h1:9D1St1vqXRkeAhNdDtpt8AivS1bhzA6yH+YWrVXWcWI=
372376
github.com/libp2p/go-libp2p-peer v0.1.0/go.mod h1:nXQvOBbwVqoP+T5Y5nCjeH4sP9IX/J0AMzcDUVruVoo=
377+
github.com/libp2p/go-libp2p-peer v0.1.1 h1:qGCWD1a+PyZcna6htMPo26jAtqirVnJ5NvBQIKV7rRY=
378+
github.com/libp2p/go-libp2p-peer v0.1.1/go.mod h1:jkF12jGB4Gk/IOo+yomm+7oLWxF278F7UnrYUQ1Q8es=
373379
github.com/libp2p/go-libp2p-peerstore v0.0.0-20190226201924-e2df3e49eabf/go.mod h1:lLfgn0N3z2t+ER57a88K7NTZjMO27ez5TyWSURd428E=
374380
github.com/libp2p/go-libp2p-peerstore v0.0.1 h1:twKovq8YK5trLrd3nB7PD2Zu9JcyAIdm7Bz9yBWjhq8=
375381
github.com/libp2p/go-libp2p-peerstore v0.0.1/go.mod h1:RabLyPVJLuNQ+GFyoEkfi8H4Ti6k/HtZJ7YKgtSq+20=
@@ -505,8 +511,8 @@ github.com/multiformats/go-multihash v0.0.5 h1:1wxmCvTXAifAepIMyF39vZinRw5sbqjPs
505511
github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po=
506512
github.com/multiformats/go-multistream v0.0.1 h1:JV4VfSdY9n7ECTtY59/TlSyFCzRILvYx4T4Ws8ZgihU=
507513
github.com/multiformats/go-multistream v0.0.1/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
508-
github.com/multiformats/go-multistream v0.0.2 h1:uWy8f8Icfo9t/U80+CR5oqM84gSgNqh8xLB7rVslfcw=
509-
github.com/multiformats/go-multistream v0.0.2/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
514+
github.com/multiformats/go-multistream v0.0.3 h1:sRTU9QWosQWXteaM0PHCFVWSIHWxOyjdwL4MF7Lsdfg=
515+
github.com/multiformats/go-multistream v0.0.3/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg=
510516
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
511517
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
512518
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
@@ -561,6 +567,10 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykE
561567
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
562568
github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa h1:E+gaaifzi2xF65PbDmuKI3PhLWY6G5opMLniFq8vmXA=
563569
github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU=
570+
github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a h1:/eS3yfGjQKG+9kayBkj0ip1BGhq6zJ3eaVksphxAaek=
571+
github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0=
572+
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU=
573+
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc=
564574
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
565575
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
566576
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=

0 commit comments

Comments
 (0)