summaryrefslogtreecommitdiff
path: root/ext/websocket
diff options
context:
space:
mode:
Diffstat (limited to 'ext/websocket')
-rw-r--r--ext/websocket/Cargo.toml1
-rw-r--r--ext/websocket/lib.rs14
2 files changed, 13 insertions, 2 deletions
diff --git a/ext/websocket/Cargo.toml b/ext/websocket/Cargo.toml
index 1ac465f69..324a2b1a4 100644
--- a/ext/websocket/Cargo.toml
+++ b/ext/websocket/Cargo.toml
@@ -21,6 +21,7 @@ deno_tls.workspace = true
fastwebsockets = { workspace = true, features = ["upgrade"] }
http.workspace = true
hyper = { workspace = true, features = ["backports"] }
+once_cell.workspace = true
serde.workspace = true
tokio.workspace = true
tokio-rustls.workspace = true
diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs
index af987c1e4..b492be0c0 100644
--- a/ext/websocket/lib.rs
+++ b/ext/websocket/lib.rs
@@ -27,6 +27,7 @@ use http::Method;
use http::Request;
use http::Uri;
use hyper::Body;
+use once_cell::sync::Lazy;
use serde::Serialize;
use std::borrow::Cow;
use std::cell::Cell;
@@ -50,9 +51,18 @@ use fastwebsockets::Frame;
use fastwebsockets::OpCode;
use fastwebsockets::Role;
use fastwebsockets::WebSocket;
-
mod stream;
+static USE_WRITEV: Lazy<bool> = Lazy::new(|| {
+ let enable = std::env::var("DENO_USE_WRITEV").ok();
+
+ if let Some(val) = enable {
+ return !val.is_empty();
+ }
+
+ false
+});
+
#[derive(Clone)]
pub struct WsRootStoreProvider(Option<Arc<dyn RootCertStoreProvider>>);
@@ -360,7 +370,7 @@ pub fn ws_create_server_stream(
),
Role::Server,
);
- ws.set_writev(true);
+ ws.set_writev(*USE_WRITEV);
ws.set_auto_close(true);
ws.set_auto_pong(true);