diff --git a/examples/server.rs b/examples/server.rs index 401ac48b0..52d268ad3 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -1,6 +1,7 @@ extern crate env_logger; extern crate quinn; extern crate rustls; +extern crate tokio; use rustls::internal::pemfile; use std::{fs::File, io::BufReader}; @@ -26,8 +27,5 @@ fn main() { let tls_config = quinn::tls::build_server_config(certs, key[0].clone()); env_logger::init(); - quinn::Server::new("0.0.0.0", 4433, tls_config) - .unwrap() - .run() - .unwrap(); + tokio::run(quinn::Server::new("0.0.0.0", 4433, tls_config).unwrap()); } diff --git a/src/server.rs b/src/server.rs index 208062b53..77d007fd3 100644 --- a/src/server.rs +++ b/src/server.rs @@ -40,10 +40,6 @@ impl Server { }) } - pub fn run(&mut self) -> QuicResult<()> { - self.wait() - } - fn received(&mut self, addr: SocketAddr, len: usize) -> QuicResult<()> { let connections = &mut self.connections; let packet = &mut self.in_buf[..len]; @@ -98,16 +94,18 @@ impl Server { impl Future for Server { type Item = (); - type Error = QuicError; + type Error = (); - fn poll(&mut self) -> Poll<(), QuicError> { + fn poll(&mut self) -> Poll { let mut waiting; loop { waiting = true; match self.socket.poll_recv_from(&mut self.in_buf) { Ok(Async::Ready((len, addr))) => { waiting = false; - self.received(addr, len)?; + if let Err(e) = self.received(addr, len) { + error!("error while handling received packet: {:?}", e); + } } Ok(Async::NotReady) => {} Err(e) => error!("Server RECV ERROR: {:?}", e),