Skip to content

Commit

Permalink
Upgrading dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
reu committed Jan 28, 2025
1 parent d8fd62e commit 9848c0e
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 38 deletions.
17 changes: 9 additions & 8 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ client = []
all-features = true

[dependencies]
headers = "0.3.7"
http = "0.2.8"
httparse = "1.7.1"
rustls = { version = "0.20.6", optional = true, default-features = false }
headers = "0.4"
http = "1"
httparse = "1.9"
rustls = { version = "0.23", optional = true, default-features = false, features = ["std"] }
thiserror = "1.0.31"
threadpool = { version = "1.8.1", optional = true, default-features = false }

Expand All @@ -33,9 +33,10 @@ flate2 = "1.0.24"
futures = "0.3.28"
indoc = "1.0.6"
md5 = "0.7.0"
rustls-pemfile = "1.0.0"
rustls = { version = "0.23", default-features = false, features = ["std", "ring"] }
rustls-pki-types= "1.10"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1.29.1", features = ["full"] }
tokio-tungstenite = "0.19.0"
tungstenite = "0.17.3"
tokio = { version = "1.43", features = ["full"] }
tokio-tungstenite = "0.26"
tungstenite = "0.26"
34 changes: 12 additions & 22 deletions examples/rustls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,18 @@ fn main() -> std::io::Result<()> {
sync::Arc,
};

use rustls::{ServerConfig, ServerConnection, StreamOwned};
use rustls::{crypto, ServerConfig, ServerConnection, StreamOwned};
use touche::{Response, Server, StatusCode};

crypto::ring::default_provider().install_default().ok();

let listener = TcpListener::bind("0.0.0.0:4444")?;

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

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

#[cfg(feature = "rustls")]
mod certs {
use std::{
fs,
io::{self, ErrorKind::Other},
};
use std::io::{self, ErrorKind::Other};

use rustls::{Certificate, PrivateKey};
use rustls_pemfile as pem;
use rustls_pki_types::{pem::PemObject, CertificateDer, PrivateKeyDer};

pub fn load_certs(filename: &str) -> io::Result<Vec<Certificate>> {
let certfile = fs::File::open(filename)?;
let mut reader = io::BufReader::new(certfile);

let certs = pem::certs(&mut reader).map_err(|err| io::Error::new(Other, err))?;

Ok(certs.into_iter().map(Certificate).collect())
pub fn load_certs(filename: &str) -> io::Result<Vec<CertificateDer<'static>>> {
CertificateDer::pem_file_iter(filename)
.map_err(|err| io::Error::new(Other, err))?
.map(|cert| cert.map_err(|err| io::Error::new(Other, err)))
.collect()
}

pub fn load_private_key(filename: &str) -> io::Result<PrivateKey> {
let keyfile = fs::File::open(filename)?;
let mut reader = io::BufReader::new(keyfile);

let keys = pem::rsa_private_keys(&mut reader).map_err(|err| io::Error::new(Other, err))?;

Ok(PrivateKey(keys[0].clone()))
pub fn load_private_key(filename: &str) -> io::Result<PrivateKeyDer<'static>> {
PrivateKeyDer::from_pem_file(filename).map_err(|err| io::Error::new(Other, err))
}
}
7 changes: 4 additions & 3 deletions examples/websocket-chat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,16 @@ fn main() -> std::io::Result<()> {

let write_ws = thread::spawn(move || {
for evt in rx {
let msg = tungstenite::Message::Text(serde_json::to_string(&evt).unwrap());
if write_ws.write_message(msg).is_err() {
let msg =
tungstenite::Message::Text(serde_json::to_string(&evt).unwrap().into());
if write_ws.send(msg).is_err() {
break;
}
}
});

let read_ws = thread::spawn(move || {
while let Ok(msg) = read_ws.read_message() {
while let Ok(msg) = read_ws.read() {
match msg.to_text() {
Ok(text) => {
let text = text.to_owned();
Expand Down
4 changes: 2 additions & 2 deletions examples/websocket.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ fn main() -> std::io::Result<()> {
Ok::<_, Box<dyn Error + Send + Sync>>(res.upgrade(|stream: Connection| {
let mut ws = WebSocket::from_raw_socket(stream, Role::Server, None);

while let Ok(msg) = ws.read_message() {
if msg.is_text() && ws.write_message(msg).is_err() {
while let Ok(msg) = ws.read() {
if msg.is_text() && ws.send(msg).is_err() {
break;
}
}
Expand Down
9 changes: 6 additions & 3 deletions src/upgrade.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use std::sync::Arc;

use thiserror::Error;

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

#[derive(Clone)]
pub(crate) struct UpgradeExtension {
pub(crate) handler: Box<dyn UpgradeHandler + 'static>,
pub(crate) handler: Arc<dyn UpgradeHandler + 'static>,
}

pub trait Upgrade {
Expand All @@ -23,15 +26,15 @@ pub trait Upgrade {
impl Upgrade for http::response::Builder {
fn upgrade(self, handle: impl UpgradeHandler + 'static) -> Self {
self.extension(UpgradeExtension {
handler: Box::new(handle),
handler: Arc::new(handle),
})
}
}

impl<T> Upgrade for http::Response<T> {
fn upgrade(mut self, handle: impl UpgradeHandler + 'static) -> Self {
self.extensions_mut().insert(UpgradeExtension {
handler: Box::new(handle),
handler: Arc::new(handle),
});
self
}
Expand Down

0 comments on commit 9848c0e

Please sign in to comment.