Skip to content

Commit 9848c0e

Browse files
committed
Upgrading dependencies
1 parent d8fd62e commit 9848c0e

File tree

5 files changed

+33
-38
lines changed

5 files changed

+33
-38
lines changed

Cargo.toml

+9-8
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ client = []
2020
all-features = true
2121

2222
[dependencies]
23-
headers = "0.3.7"
24-
http = "0.2.8"
25-
httparse = "1.7.1"
26-
rustls = { version = "0.20.6", optional = true, default-features = false }
23+
headers = "0.4"
24+
http = "1"
25+
httparse = "1.9"
26+
rustls = { version = "0.23", optional = true, default-features = false, features = ["std"] }
2727
thiserror = "1.0.31"
2828
threadpool = { version = "1.8.1", optional = true, default-features = false }
2929

@@ -33,9 +33,10 @@ flate2 = "1.0.24"
3333
futures = "0.3.28"
3434
indoc = "1.0.6"
3535
md5 = "0.7.0"
36-
rustls-pemfile = "1.0.0"
36+
rustls = { version = "0.23", default-features = false, features = ["std", "ring"] }
37+
rustls-pki-types= "1.10"
3738
serde = { version = "1", features = ["derive"] }
3839
serde_json = "1"
39-
tokio = { version = "1.29.1", features = ["full"] }
40-
tokio-tungstenite = "0.19.0"
41-
tungstenite = "0.17.3"
40+
tokio = { version = "1.43", features = ["full"] }
41+
tokio-tungstenite = "0.26"
42+
tungstenite = "0.26"

examples/rustls.rs

+12-22
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,18 @@ fn main() -> std::io::Result<()> {
1111
sync::Arc,
1212
};
1313

14-
use rustls::{ServerConfig, ServerConnection, StreamOwned};
14+
use rustls::{crypto, ServerConfig, ServerConnection, StreamOwned};
1515
use touche::{Response, Server, StatusCode};
1616

17+
crypto::ring::default_provider().install_default().ok();
18+
1719
let listener = TcpListener::bind("0.0.0.0:4444")?;
1820

1921
let tls_cfg = {
2022
let certs = certs::load_certs("examples/tls/cert.pem")?;
2123
let key = certs::load_private_key("examples/tls/key.pem")?;
2224

2325
let cfg = ServerConfig::builder()
24-
.with_safe_defaults()
2526
.with_no_client_auth()
2627
.with_single_cert(certs, key)
2728
.map_err(|e| io::Error::new(Other, e))?;
@@ -52,29 +53,18 @@ fn main() -> std::io::Result<()> {
5253

5354
#[cfg(feature = "rustls")]
5455
mod certs {
55-
use std::{
56-
fs,
57-
io::{self, ErrorKind::Other},
58-
};
56+
use std::io::{self, ErrorKind::Other};
5957

60-
use rustls::{Certificate, PrivateKey};
61-
use rustls_pemfile as pem;
58+
use rustls_pki_types::{pem::PemObject, CertificateDer, PrivateKeyDer};
6259

63-
pub fn load_certs(filename: &str) -> io::Result<Vec<Certificate>> {
64-
let certfile = fs::File::open(filename)?;
65-
let mut reader = io::BufReader::new(certfile);
66-
67-
let certs = pem::certs(&mut reader).map_err(|err| io::Error::new(Other, err))?;
68-
69-
Ok(certs.into_iter().map(Certificate).collect())
60+
pub fn load_certs(filename: &str) -> io::Result<Vec<CertificateDer<'static>>> {
61+
CertificateDer::pem_file_iter(filename)
62+
.map_err(|err| io::Error::new(Other, err))?
63+
.map(|cert| cert.map_err(|err| io::Error::new(Other, err)))
64+
.collect()
7065
}
7166

72-
pub fn load_private_key(filename: &str) -> io::Result<PrivateKey> {
73-
let keyfile = fs::File::open(filename)?;
74-
let mut reader = io::BufReader::new(keyfile);
75-
76-
let keys = pem::rsa_private_keys(&mut reader).map_err(|err| io::Error::new(Other, err))?;
77-
78-
Ok(PrivateKey(keys[0].clone()))
67+
pub fn load_private_key(filename: &str) -> io::Result<PrivateKeyDer<'static>> {
68+
PrivateKeyDer::from_pem_file(filename).map_err(|err| io::Error::new(Other, err))
7969
}
8070
}

examples/websocket-chat.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,16 @@ fn main() -> std::io::Result<()> {
5757

5858
let write_ws = thread::spawn(move || {
5959
for evt in rx {
60-
let msg = tungstenite::Message::Text(serde_json::to_string(&evt).unwrap());
61-
if write_ws.write_message(msg).is_err() {
60+
let msg =
61+
tungstenite::Message::Text(serde_json::to_string(&evt).unwrap().into());
62+
if write_ws.send(msg).is_err() {
6263
break;
6364
}
6465
}
6566
});
6667

6768
let read_ws = thread::spawn(move || {
68-
while let Ok(msg) = read_ws.read_message() {
69+
while let Ok(msg) = read_ws.read() {
6970
match msg.to_text() {
7071
Ok(text) => {
7172
let text = text.to_owned();

examples/websocket.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ fn main() -> std::io::Result<()> {
1010
Ok::<_, Box<dyn Error + Send + Sync>>(res.upgrade(|stream: Connection| {
1111
let mut ws = WebSocket::from_raw_socket(stream, Role::Server, None);
1212

13-
while let Ok(msg) = ws.read_message() {
14-
if msg.is_text() && ws.write_message(msg).is_err() {
13+
while let Ok(msg) = ws.read() {
14+
if msg.is_text() && ws.send(msg).is_err() {
1515
break;
1616
}
1717
}

src/upgrade.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::sync::Arc;
2+
13
use thiserror::Error;
24

35
use crate::connection::Connection;
@@ -12,8 +14,9 @@ impl<F: Fn(Connection) + Sync + Send> UpgradeHandler for F {
1214
}
1315
}
1416

17+
#[derive(Clone)]
1518
pub(crate) struct UpgradeExtension {
16-
pub(crate) handler: Box<dyn UpgradeHandler + 'static>,
19+
pub(crate) handler: Arc<dyn UpgradeHandler + 'static>,
1720
}
1821

1922
pub trait Upgrade {
@@ -23,15 +26,15 @@ pub trait Upgrade {
2326
impl Upgrade for http::response::Builder {
2427
fn upgrade(self, handle: impl UpgradeHandler + 'static) -> Self {
2528
self.extension(UpgradeExtension {
26-
handler: Box::new(handle),
29+
handler: Arc::new(handle),
2730
})
2831
}
2932
}
3033

3134
impl<T> Upgrade for http::Response<T> {
3235
fn upgrade(mut self, handle: impl UpgradeHandler + 'static) -> Self {
3336
self.extensions_mut().insert(UpgradeExtension {
34-
handler: Box::new(handle),
37+
handler: Arc::new(handle),
3538
});
3639
self
3740
}

0 commit comments

Comments
 (0)