@@ -262,7 +262,7 @@ func SpeedTest(c *cli.Context) error {
262262
263263 // spawn 10 concurrent pingers
264264 for i := 0 ; i < 10 ; i ++ {
265- go pingWorker (jobs , results , & wg , c .String (defs .OptionSource ), network )
265+ go pingWorker (jobs , results , & wg , c .String (defs .OptionSource ), network , c . Bool ( defs . OptionNoICMP ) )
266266 }
267267
268268 // send ping jobs to workers
@@ -303,7 +303,7 @@ func SpeedTest(c *cli.Context) error {
303303 }
304304}
305305
306- func pingWorker (jobs <- chan PingJob , results chan <- PingResult , wg * sync.WaitGroup , srcIp , network string ) {
306+ func pingWorker (jobs <- chan PingJob , results chan <- PingResult , wg * sync.WaitGroup , srcIp , network string , noICMP bool ) {
307307 for {
308308 job := <- jobs
309309 server := job .Server
@@ -317,6 +317,9 @@ func pingWorker(jobs <-chan PingJob, results chan<- PingResult, wg *sync.WaitGro
317317
318318 // check the server is up by accessing the ping URL and checking its returned value == empty and status code == 200
319319 if server .IsUp () {
320+ // skip ICMP if option given
321+ server .NoICMP = noICMP
322+
320323 // if server is up, get ping
321324 ping , _ , err := server .ICMPPingAndJitter (1 , srcIp , network )
322325 if err != nil {
0 commit comments