From 5a3bdcb27b4f5fffa6e3fad038c8f6759c417090 Mon Sep 17 00:00:00 2001 From: Javi <666807+JaviSoto@users.noreply.github.com> Date: Mon, 23 Feb 2026 18:41:03 -0800 Subject: [PATCH] app-server: fix connecting via websockets with `Sec-WebSocket-Extensions: permessage-deflate` (#12629) # External (non-OpenAI) Pull Request Requirements Before opening this Pull Request, please read the dedicated "Contributing" markdown file or your PR may be closed: https://github.com/openai/codex/blob/main/docs/contributing.md If your PR conforms to our contribution guidelines, replace this text with a detailed and high quality description of your changes. Include a link to a bug report or enhancement request. --- codex-rs/app-server/src/transport.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/codex-rs/app-server/src/transport.rs b/codex-rs/app-server/src/transport.rs index 80768620b..b074a6957 100644 --- a/codex-rs/app-server/src/transport.rs +++ b/codex-rs/app-server/src/transport.rs @@ -30,8 +30,9 @@ use tokio::net::TcpListener; use tokio::net::TcpStream; use tokio::sync::mpsc; use tokio::task::JoinHandle; -use tokio_tungstenite::accept_async; +use tokio_tungstenite::accept_async_with_config; use tokio_tungstenite::tungstenite::Message as WebSocketMessage; +use tokio_tungstenite::tungstenite::protocol::WebSocketConfig; use tokio_util::sync::CancellationToken; use tracing::debug; use tracing::error; @@ -307,13 +308,14 @@ async fn run_websocket_connection( stream: TcpStream, transport_event_tx: mpsc::Sender, ) { - let websocket_stream = match accept_async(stream).await { - Ok(stream) => stream, - Err(err) => { - warn!("failed to complete websocket handshake: {err}"); - return; - } - }; + let websocket_stream = + match accept_async_with_config(stream, Some(WebSocketConfig::default())).await { + Ok(stream) => stream, + Err(err) => { + warn!("failed to complete websocket handshake: {err}"); + return; + } + }; let (writer_tx, writer_rx) = mpsc::channel::(CHANNEL_CAPACITY); let writer_tx_for_reader = writer_tx.clone();