Merge branch 'master' into dapps-sync

Conflicts:
	Cargo.lock
	dapps/src/router/mod.rs
	signer/src/ws_server/session.rs
This commit is contained in:
Tomasz Drwięga
2016-09-01 12:01:44 +02:00
53 changed files with 886 additions and 553 deletions

View File

@@ -12,7 +12,7 @@ rustc_version = "0.1"
[dependencies]
rand = "0.3.14"
jsonrpc-core = "2.1"
jsonrpc-core = "3.0"
log = "0.3"
env_logger = "0.3"
ws = { git = "https://github.com/ethcore/ws-rs.git", branch = "mio-upstream-stable" }

View File

@@ -22,7 +22,7 @@ use std::path::{PathBuf, Path};
use std::sync::Arc;
use std::str::FromStr;
use jsonrpc_core::IoHandler;
use util::{H256, version};
use util::{H256, Mutex, version};
#[cfg(feature = "ui")]
mod signer {
@@ -95,7 +95,7 @@ fn add_headers(mut response: ws::Response, mime: &str) -> ws::Response {
}
pub struct Session {
out: ws::Sender,
out: Arc<Mutex<ws::Sender>>,
skip_origin_validation: bool,
self_origin: String,
authcodes_path: PathBuf,
@@ -156,12 +156,16 @@ impl ws::Handler for Session {
fn on_message(&mut self, msg: ws::Message) -> ws::Result<()> {
let req = try!(msg.as_text());
match self.handler.handle_request(req) {
Some(res) => {
self.out.send(res)
},
None => Ok(()),
if let Some(async) = self.handler.handle_request(req) {
let out = self.out.clone();
async.on_result(move |result| {
let res = out.lock().send(result);
if let Err(e) = res {
warn!(target: "signer", "Error while sending response: {:?}", e);
}
});
}
Ok(())
}
}
@@ -188,7 +192,7 @@ impl ws::Factory for Factory {
fn connection_made(&mut self, sender: ws::Sender) -> Self::Handler {
Session {
out: sender,
out: Arc::new(Mutex::new(sender)),
handler: self.handler.clone(),
skip_origin_validation: self.skip_origin_validation,
self_origin: self.self_origin.clone(),