diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 2539039..a3cf5ac 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -17,7 +17,7 @@ jobs:
- '3.3.4'
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v7
- name: Set up Ruby & Rust
uses: oxidize-rb/actions/setup-ruby-and-rust@v1
with:
diff --git a/Cargo.lock b/Cargo.lock
index 0e14e36..0ad3e20 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-version = 3
+version = 4
[[package]]
name = "addr2line"
@@ -366,9 +366,9 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
[[package]]
name = "h2"
-version = "0.4.7"
+version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e"
+checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155"
dependencies = [
"atomic-waker",
"bytes",
@@ -443,13 +443,14 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "hyper"
-version = "1.6.0"
+version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
+checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
dependencies = [
+ "atomic-waker",
"bytes",
"futures-channel",
- "futures-util",
+ "futures-core",
"h2",
"http",
"http-body",
diff --git a/ext/hyper_ruby/Cargo.toml b/ext/hyper_ruby/Cargo.toml
index 3098e90..2844520 100644
--- a/ext/hyper_ruby/Cargo.toml
+++ b/ext/hyper_ruby/Cargo.toml
@@ -16,7 +16,7 @@ bytes = "1.5"
tokio-stream = { version = "0.1", features = ["net"] }
crossbeam-channel = "0.5.14"
rb-sys = "0.9.110"
-hyper = { version = "1.0", features = ["http1", "http2", "server"] }
+hyper = { version = "1.10", features = ["http1", "http2", "server"] }
hyper-util = { version = "0.1", features = ["tokio", "server", "server-graceful", "server-auto", "http1", "http2"] }
http-body-util = "0.1.2"
jemallocator = { version = "0.5.4", features = ["disable_initial_exec_tls"] }
diff --git a/ext/hyper_ruby/src/lib.rs b/ext/hyper_ruby/src/lib.rs
index 54f785c..7a89261 100644
--- a/ext/hyper_ruby/src/lib.rs
+++ b/ext/hyper_ruby/src/lib.rs
@@ -16,6 +16,7 @@ use tokio::io::{AsyncRead, AsyncWrite};
use std::cell::RefCell;
use std::net::SocketAddr;
+use std::os::unix::fs::MetadataExt;
use std::sync::atomic::{AtomicU64, Ordering};
use tokio::net::{TcpListener, UnixListener};
@@ -27,7 +28,7 @@ use crossbeam_channel;
use hyper::service::service_fn;
use hyper::{Error, Request as HyperRequest, Response as HyperResponse, StatusCode};
-use hyper::body::Incoming;
+use hyper::body::{Body, Incoming};
use hyper_util::rt::TokioIo;
use hyper_util::server::conn::auto;
use http_body_util::BodyExt;
@@ -113,6 +114,9 @@ struct Server {
runtime: RefCell