* Support parity protocol. (#8035)
* updater: apply exponential backoff after download failure (#8059)
* updater: apply exponential backoff after download failure
* updater: reset backoff on new release
* Max code size on Kovan (#8067)
* Enable code size limit on kovan
* Fix formatting.
* Limit incoming connections. (#8060)
* Limit ingress connections
* Optimized handshakes logging
* WASM libraries bump (#7970)
* update wasmi, parity-wasm, wasm-utils to latest version
* Update to new wasmi & error handling
* also utilize new stack limiter
* fix typo
* replace dependency url
* Cargo.lock update
* add some dos protection (#8084)
* revert removing blooms (#8066)
* Revert "fix traces, removed bloomchain crate, closes #7228, closes #7167"
This reverts commit 1bf62038678295e5586f02a38a0c5aab9a9efe62.
* Revert "fixed broken logs (#7934)"
This reverts commit f8a2e53f3e
.
* fixed broken logs
* bring back old lock order
* remove migration v13
* revert CURRENT_VERSION to 12 in migration.rs
* more dos protection (#8104)
* Const time comparison (#8113)
* Use `subtle::slices_equal` for constant time comparison.
Also update the existing version of subtle in `ethcrypto` from
0.1 to 0.5
* Test specifically for InvalidPassword error.
* fix trace filter returning returning unrelated reward calls, closes #8070 (#8098)
* network: init discovery using healthy nodes (#8061)
* network: init discovery using healthy nodes
* network: fix style grumble
* network: fix typo
* Postpone Kovan hard fork (#8137)
* ethcore: postpone Kovan hard fork
* util: update version fork metadata
* Disable UI by default. (#8105)
* dapps: update parity-ui dependencies (#8160)
25 lines
818 B
Rust
25 lines
818 B
Rust
use std::io::{BufReader, Read, BufRead};
|
|
use bloomchain::Bloom;
|
|
use super::FromHex;
|
|
|
|
pub fn for_each_bloom<F>(bytes: &[u8], mut f: F) where F: FnMut(usize, Bloom) {
|
|
let mut reader = BufReader::new(bytes);
|
|
let mut line = String::new();
|
|
while reader.read_line(&mut line).unwrap() > 0 {
|
|
{
|
|
let mut number_bytes = vec![];
|
|
let mut bloom_bytes = [0; 512];
|
|
|
|
let mut line_reader = BufReader::new(line.as_ref() as &[u8]);
|
|
line_reader.read_until(b' ', &mut number_bytes).unwrap();
|
|
line_reader.consume(2);
|
|
line_reader.read_exact(&mut bloom_bytes).unwrap();
|
|
|
|
let number = String::from_utf8(number_bytes).map(|s| s[..s.len() -1].to_owned()).unwrap().parse::<usize>().unwrap();
|
|
let bloom = Bloom::from_hex(&String::from_utf8(bloom_bytes.to_vec()).unwrap());
|
|
f(number, bloom);
|
|
}
|
|
line.clear();
|
|
}
|
|
}
|