diff --git a/tcp/Cargo.toml b/tcp/Cargo.toml index 77f4315fe..d0f4b1c50 100644 --- a/tcp/Cargo.toml +++ b/tcp/Cargo.toml @@ -7,7 +7,7 @@ homepage = "https://github.com/paritytech/jsonrpc" license = "MIT" name = "jsonrpc-tcp-server" repository = "https://github.com/paritytech/jsonrpc" -version = "14.0.0" +version = "14.0.1" [dependencies] log = "0.4" diff --git a/tcp/src/server.rs b/tcp/src/server.rs index a6ac59c03..620e40f97 100644 --- a/tcp/src/server.rs +++ b/tcp/src/server.rs @@ -88,7 +88,13 @@ impl + 'static> ServerBuilder { let connections = SuspendableStream::new(listener.incoming()); let server = connections.map(move |socket| { - let peer_addr = socket.peer_addr().expect("Unable to determine socket peer address"); + let peer_addr = match socket.peer_addr() { + Ok(addr) => addr, + Err(e) => { + warn!(target: "tcp", "Unable to determine socket peer address, ignoring connection {}", e); + return future::Either::A(future::ok(())) + } + }; trace!(target: "tcp", "Accepted incoming connection from {}", &peer_addr); let (sender, receiver) = mpsc::channel(65536); @@ -101,7 +107,10 @@ impl + 'static> ServerBuilder { let service = Service::new(peer_addr, rpc_handler.clone(), meta); let (writer, reader) = Framed::new( socket, - codecs::StreamCodec::new(incoming_separator.clone(), outgoing_separator.clone()), + codecs::StreamCodec::new( + incoming_separator.clone(), + outgoing_separator.clone() + ), ) .split(); @@ -137,7 +146,7 @@ impl + 'static> ServerBuilder { Ok(()) }); - writer + future::Either::B(writer) }); Ok(server)