fix error propagation

This commit is contained in:
keorn
2016-08-24 15:55:47 +02:00
parent 1cb3c164da
commit 77f06be7fb
9 changed files with 63 additions and 84 deletions

View File

@@ -1024,13 +1024,15 @@ impl BlockChainClient for Client {
fn queue_infinity_message(&self, message: Bytes) {
let full_rlp = UntrustedRlp::new(&message);
let signature = full_rlp.val_at(0).unwrap_or_else(|| return);
let message: Vec<_> = full_rlp.val_at(1).unwrap_or_else(|| return);
let message_rlp = UntrustedRlp::new(&message);
let pub_key = recover(&signature, &message.sha3()).unwrap_or_else(|| return);
if let Some(new_message) = self.engine.handle_message(pub_key.sha3().into(), message_rlp)
{
self.notify(|notify| notify.broadcast(&new_message));
if let Ok(signature) = full_rlp.val_at(0) {
if let Ok(message) = full_rlp.val_at::<Vec<_>>(1) {
let message_rlp = UntrustedRlp::new(&message);
if let Ok(pub_key) = recover(&signature, &message.sha3()) {
if let Ok(new_message) = self.engine.handle_message(pub_key.sha3().into(), message_rlp) {
self.notify(|notify| notify.broadcast(&new_message));
}
}
}
}
}
}

View File

@@ -38,7 +38,7 @@ use spec::Spec;
use block_queue::BlockQueueInfo;
use block::{OpenBlock, SealedBlock};
use executive::Executed;
use error::CallError;
use error::{Error, CallError};
use trace::LocalizedTrace;
/// Test client.

View File

@@ -183,7 +183,7 @@ pub trait BlockChainClient : Sync + Send {
fn queue_transactions(&self, transactions: Vec<Bytes>);
/// Queue packet
fn queue_infinity_message(&self, packet: Bytes);
fn queue_infinity_message(&self, message: Bytes);
/// list all transactions
fn pending_transactions(&self) -> Vec<SignedTransaction>;