aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-client
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2026-07-30 10:43:00 +0200
committerGitHub <noreply@github.com>2026-07-30 10:43:00 +0200
commit19befc2118f5943862629fd9ce11de855056c3ef (patch)
tree6ae5aa53f8cf3bff8f0b820b2a2ee4791e149ec6 /zellij-client
parentMore dependency upgrades for debian (#5421) (diff)
downloadsl0ppij-19befc2118f5943862629fd9ce11de855056c3ef.tar.gz
sl0ppij-19befc2118f5943862629fd9ce11de855056c3ef.tar.xz
sl0ppij-19befc2118f5943862629fd9ce11de855056c3ef.zip
Even more debian upgrades (#5424)
* Upgrade axum-extra 0.12, axum-server 0.8, rcgen 0.14 * rustfmt
Diffstat (limited to 'zellij-client')
-rw-r--r--zellij-client/Cargo.toml6
-rw-r--r--zellij-client/src/remote_attach/unit/remote_attach_tests.rs15
-rw-r--r--zellij-client/src/web_client/ipc_listener.rs4
-rw-r--r--zellij-client/src/web_client/mod.rs23
4 files changed, 38 insertions, 10 deletions
diff --git a/zellij-client/Cargo.toml b/zellij-client/Cargo.toml
index c22f8366..59300bdc 100644
--- a/zellij-client/Cargo.toml
+++ b/zellij-client/Cargo.toml
@@ -14,8 +14,8 @@ license.workspace = true
# so let's see how that works out before rocking the boat
futures = { version = "0.3.30", optional = true }
axum = { version = "0.8.4", features = ["ws"], optional = true }
-axum-extra = { version = "0.10.1", features = ["cookie"], optional = true }
-axum-server = { version = "0.7", features = ["tls-rustls"], optional = true }
+axum-extra = { version = "0.12", features = ["cookie"], optional = true }
+axum-server = { version = "0.8", features = ["tls-rustls"], optional = true }
time = { version = "0.3", optional = true }
tower-http = { version = "0.6.4", features = ["cors"], optional = true }
@@ -63,7 +63,7 @@ windows-sys = { workspace = true, features = [
[dev-dependencies]
insta = "1.48"
-rcgen = "0.13"
+rcgen = "0.14"
serde_json = "1.0"
serial_test = "3.0"
tempfile = "3"
diff --git a/zellij-client/src/remote_attach/unit/remote_attach_tests.rs b/zellij-client/src/remote_attach/unit/remote_attach_tests.rs
index 8a57b589..1210ac13 100644
--- a/zellij-client/src/remote_attach/unit/remote_attach_tests.rs
+++ b/zellij-client/src/remote_attach/unit/remote_attach_tests.rs
@@ -222,6 +222,7 @@ mod tls_mock_server {
use axum::Router;
use axum_server::tls_rustls::RustlsConfig;
use axum_server::Handle;
+ use std::net::SocketAddr;
use std::path::PathBuf;
use std::time::Duration;
@@ -252,7 +253,8 @@ mod tls_mock_server {
))];
server_params.extended_key_usages = vec![rcgen::ExtendedKeyUsagePurpose::ServerAuth];
let server_key = rcgen::KeyPair::generate().unwrap();
- let server_cert = server_params.signed_by(&server_key, &ca, &ca_key).unwrap();
+ let ca_issuer = rcgen::Issuer::from_params(&ca_params, &ca_key);
+ let server_cert = server_params.signed_by(&server_key, &ca_issuer).unwrap();
// Write to temp files
let ca_cert_file = tempfile::NamedTempFile::new().unwrap();
@@ -277,7 +279,7 @@ mod tls_mock_server {
pub async fn start_tls_mock_server(
state: MockRemoteServerState,
certs: &TlsTestCerts,
- ) -> (u16, Handle, tokio::task::JoinHandle<()>) {
+ ) -> (u16, Handle<SocketAddr>, tokio::task::JoinHandle<()>) {
let app = Router::new()
.route("/command/login", post(super::mock_server::handle_login))
.route("/session", post(super::mock_server::handle_session))
@@ -296,6 +298,9 @@ mod tls_mock_server {
let listener =
std::net::TcpListener::bind("127.0.0.1:0").expect("Failed to bind test TLS server");
+ listener
+ .set_nonblocking(true)
+ .expect("Failed to set test TLS server listener to non-blocking");
let port = listener.local_addr().unwrap().port();
let handle = Handle::new();
@@ -303,6 +308,7 @@ mod tls_mock_server {
let server_task = tokio::spawn(async move {
axum_server::from_tcp_rustls(listener, rustls_config)
+ .unwrap()
.handle(server_handle)
.serve(app.into_make_service())
.await
@@ -315,7 +321,10 @@ mod tls_mock_server {
(port, handle, server_task)
}
- pub async fn shutdown_server(handle: Handle, server_task: tokio::task::JoinHandle<()>) {
+ pub async fn shutdown_server(
+ handle: Handle<SocketAddr>,
+ server_task: tokio::task::JoinHandle<()>,
+ ) {
handle.graceful_shutdown(Some(Duration::from_secs(1)));
let _ = server_task.await;
}
diff --git a/zellij-client/src/web_client/ipc_listener.rs b/zellij-client/src/web_client/ipc_listener.rs
index 0ba37002..76d83a6b 100644
--- a/zellij-client/src/web_client/ipc_listener.rs
+++ b/zellij-client/src/web_client/ipc_listener.rs
@@ -1,6 +1,6 @@
use axum_server::Handle;
use interprocess::local_socket::traits::tokio::Listener;
-use std::net::IpAddr;
+use std::net::{IpAddr, SocketAddr};
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use zellij_utils::consts::{ipc_bind_async, WEBSERVER_SOCKET_PATH};
use zellij_utils::prost::Message;
@@ -61,7 +61,7 @@ pub async fn send_webserver_response(
}
pub async fn listen_to_web_server_instructions(
- server_handle: Handle,
+ server_handle: Handle<SocketAddr>,
id: &str,
web_server_ip: IpAddr,
web_server_port: u16,
diff --git a/zellij-client/src/web_client/mod.rs b/zellij-client/src/web_client/mod.rs
index 0ce4ed0f..ded03bf3 100644
--- a/zellij-client/src/web_client/mod.rs
+++ b/zellij-client/src/web_client/mod.rs
@@ -265,15 +265,34 @@ pub async fn serve_web_client(
}
}));
+ if let Err(e) = listener.set_nonblocking(true) {
+ log::error!("Failed to set web server listener to non-blocking: {}", e);
+ return;
+ }
+
match rustls_config {
Some(rustls_config) => {
- let _ = axum_server::from_tcp_rustls(listener, rustls_config)
+ let server = match axum_server::from_tcp_rustls(listener, rustls_config) {
+ Ok(server) => server,
+ Err(e) => {
+ log::error!("Failed to create TLS web server from listener: {}", e);
+ return;
+ },
+ };
+ let _ = server
.handle(server_handle)
.serve(app.into_make_service())
.await;
},
None => {
- let _ = axum_server::from_tcp(listener)
+ let server = match axum_server::from_tcp(listener) {
+ Ok(server) => server,
+ Err(e) => {
+ log::error!("Failed to create web server from listener: {}", e);
+ return;
+ },
+ };
+ let _ = server
.handle(server_handle)
.serve(app.into_make_service())
.await;