diff --git a/defs/server.go b/defs/server.go index ed2ffad..669750d 100644 --- a/defs/server.go +++ b/defs/server.go @@ -59,9 +59,10 @@ func (s *Server) IsUp() bool { return false } defer resp.Body.Close() - b, _ := ioutil.ReadAll(resp.Body) - if len(b) > 0 { + b, err := ioutil.ReadAll(resp.Body) + if err != nil || len(b) > 0 { log.Debugf("Failed when parsing get IP result: %s", b) + return false } // only return online if the ping URL returns nothing and 200 return resp.StatusCode == http.StatusOK diff --git a/speedtest/helper.go b/speedtest/helper.go index 1be6203..5f2b0a3 100644 --- a/speedtest/helper.go +++ b/speedtest/helper.go @@ -18,7 +18,7 @@ import ( "github.com/librespeed/speedtest-cli/defs" "github.com/librespeed/speedtest-cli/report" log "github.com/sirupsen/logrus" -"github.com/urfave/cli/v2" + "github.com/urfave/cli/v2" ) const ( diff --git a/speedtest/speedtest.go b/speedtest/speedtest.go index 20018ac..5f2c6f4 100644 --- a/speedtest/speedtest.go +++ b/speedtest/speedtest.go @@ -321,8 +321,14 @@ func SpeedTest(c *cli.Context) error { // get the fastest server's index in the `servers` array var serverIdx int - for idx, ping := range pingList { - if ping > 0 && ping <= pingList[serverIdx] { + for idx, newPing := range pingList { + oldPing, ok := pingList[serverIdx] + + if ok { + if newPing > 0 && newPing <= oldPing { + serverIdx = idx + } + } else { serverIdx = idx } }