1
0
mirror of https://github.com/actix/actix-extras.git synced 2024-11-24 16:02:59 +01:00

fix ssl test server

This commit is contained in:
Nikolay Kim 2018-05-29 10:59:24 -07:00
parent dffb7936fb
commit 844be8d9dd
3 changed files with 9 additions and 21 deletions

View File

@ -192,7 +192,7 @@ impl StreamHandlerType {
let io = TcpStream::from_std(io, &Handle::default()) let io = TcpStream::from_std(io, &Handle::default())
.expect("failed to associate TCP stream"); .expect("failed to associate TCP stream");
Arbiter::spawn(TlsAcceptorExt::accept_async(acceptor, io).then( current_thread::spawn(TlsAcceptorExt::accept_async(acceptor, io).then(
move |res| { move |res| {
match res { match res {
Ok(io) => current_thread::spawn(HttpChannel::new( Ok(io) => current_thread::spawn(HttpChannel::new(
@ -213,7 +213,7 @@ impl StreamHandlerType {
let io = TcpStream::from_std(io, &Handle::default()) let io = TcpStream::from_std(io, &Handle::default())
.expect("failed to associate TCP stream"); .expect("failed to associate TCP stream");
Arbiter::spawn(SslAcceptorExt::accept_async(acceptor, io).then( current_thread::spawn(SslAcceptorExt::accept_async(acceptor, io).then(
move |res| { move |res| {
match res { match res {
Ok(io) => { Ok(io) => {

View File

@ -14,7 +14,7 @@ use net2::TcpBuilder;
use tokio::runtime::current_thread::Runtime; use tokio::runtime::current_thread::Runtime;
#[cfg(feature = "alpn")] #[cfg(feature = "alpn")]
use openssl::ssl::SslAcceptor; use openssl::ssl::SslAcceptorBuilder;
use application::{App, HttpApplication}; use application::{App, HttpApplication};
use body::Binary; use body::Binary;
@ -251,7 +251,7 @@ impl Drop for TestServer {
pub struct TestServerBuilder<S> { pub struct TestServerBuilder<S> {
state: Box<Fn() -> S + Sync + Send + 'static>, state: Box<Fn() -> S + Sync + Send + 'static>,
#[cfg(feature = "alpn")] #[cfg(feature = "alpn")]
ssl: Option<SslAcceptor>, ssl: Option<SslAcceptorBuilder>,
} }
impl<S: 'static> TestServerBuilder<S> { impl<S: 'static> TestServerBuilder<S> {
@ -268,7 +268,7 @@ impl<S: 'static> TestServerBuilder<S> {
#[cfg(feature = "alpn")] #[cfg(feature = "alpn")]
/// Create ssl server /// Create ssl server
pub fn ssl(mut self, ssl: SslAcceptor) -> Self { pub fn ssl(mut self, ssl: SslAcceptorBuilder) -> Self {
self.ssl = Some(ssl); self.ssl = Some(ssl);
self self
} }
@ -291,10 +291,9 @@ impl<S: 'static> TestServerBuilder<S> {
let tcp = net::TcpListener::bind("127.0.0.1:0").unwrap(); let tcp = net::TcpListener::bind("127.0.0.1:0").unwrap();
let local_addr = tcp.local_addr().unwrap(); let local_addr = tcp.local_addr().unwrap();
let state = self.state;
System::new("actix-test-server") System::new("actix-test-server")
.config(move || { .config(move || {
let state = self.state;
let srv = HttpServer::new(move || { let srv = HttpServer::new(move || {
let mut app = TestApp::new(state()); let mut app = TestApp::new(state());
config(&mut app); config(&mut app);
@ -311,22 +310,11 @@ impl<S: 'static> TestServerBuilder<S> {
#[cfg(feature = "alpn")] #[cfg(feature = "alpn")]
{ {
use futures::Stream;
use std::io;
use tokio_openssl::SslAcceptorExt;
let ssl = self.ssl.take(); let ssl = self.ssl.take();
if let Some(ssl) = ssl { if let Some(ssl) = ssl {
srv.start_incoming( srv.listen_ssl(tcp, ssl).unwrap().start();
tcp.incoming().and_then(move |sock| {
ssl.accept_async(sock).map_err(|e| {
io::Error::new(io::ErrorKind::Other, e)
})
}),
false,
);
} else { } else {
srv.start_incoming(tcp.incoming(), false); srv.listen(tcp).start();
} }
} }
#[cfg(not(feature = "alpn"))] #[cfg(not(feature = "alpn"))]

View File

@ -227,7 +227,7 @@ fn test_ws_server_ssl() {
.set_certificate_chain_file("tests/cert.pem") .set_certificate_chain_file("tests/cert.pem")
.unwrap(); .unwrap();
let mut srv = test::TestServer::build().ssl(builder.build()).start(|app| { let mut srv = test::TestServer::build().ssl(builder).start(|app| {
app.handler(|req| { app.handler(|req| {
ws::start( ws::start(
req, req,