From 364a1fa5a8cc9524ac67905faed56735f3d86d3a Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Sat, 17 Feb 2018 21:54:39 +0100 Subject: [PATCH] Fix a division by zero in light client RPC handler (#7917) --- ethcore/light/src/on_demand/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ethcore/light/src/on_demand/mod.rs b/ethcore/light/src/on_demand/mod.rs index 4d32832e8..64794d49e 100644 --- a/ethcore/light/src/on_demand/mod.rs +++ b/ethcore/light/src/on_demand/mod.rs @@ -18,6 +18,7 @@ //! The request service is implemented using Futures. Higher level request handlers //! will take the raw data received here and extract meaningful results from it. +use std::cmp; use std::collections::HashMap; use std::marker::PhantomData; use std::sync::Arc; @@ -366,7 +367,7 @@ impl OnDemand { .filter_map(|pending| { // the peer we dispatch to is chosen randomly let num_peers = peers.len(); - let rng = rand::random::() % num_peers; + let rng = rand::random::() % cmp::max(num_peers, 1); for (peer_id, peer) in peers.iter().chain(peers.iter()).skip(rng).take(num_peers) { // TODO: see which requests can be answered by the cache?