diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2023-08-10 09:59:06 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-10 09:59:06 +0530 |
commit | 91dc6fa5f11f5621c21397c783ee899bfd9657ef (patch) | |
tree | b10905fac7738a987acbaf4354f2e0f8c6286130 | |
parent | 8f854782b13658f169920a1a7a21b8e6b64a0c00 (diff) |
chore: upgrade fastwebsockets to 0.4.4 (#19089)
Fixes https://github.com/denoland/deno/issues/19041
-rw-r--r-- | Cargo.lock | 6 | ||||
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | cli/tests/integration/inspector_tests.rs | 6 | ||||
-rw-r--r-- | cli/tests/integration/run_tests.rs | 12 | ||||
-rw-r--r-- | ext/websocket/lib.rs | 28 | ||||
-rw-r--r-- | runtime/inspector_server.rs | 4 | ||||
-rw-r--r-- | test_util/src/lib.rs | 12 |
7 files changed, 39 insertions, 31 deletions
diff --git a/Cargo.lock b/Cargo.lock index 0e38867c0..b5997d082 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2018,17 +2018,17 @@ dependencies = [ [[package]] name = "fastwebsockets" -version = "0.3.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1925eb5ee48fffa504a9edce24b3b4d43e2809d1cc713a1df2b13a46e661b3c6" +checksum = "9e6185b6dc9dddc4db0dedd2e213047e93bcbf7a0fb092abc4c4e4f3195efdb4" dependencies = [ "base64 0.21.0", - "cc", "hyper 0.14.26", "pin-project", "rand", "sha1", "simdutf8", + "thiserror", "tokio", "utf-8", ] diff --git a/Cargo.toml b/Cargo.toml index 952aad1fa..7dba722d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,7 +88,7 @@ data-url = "=0.2.0" dlopen = "0.1.8" encoding_rs = "=0.8.31" ecb = "=0.1.1" -fastwebsockets = "=0.3.1" +fastwebsockets = "=0.4.4" filetime = "0.2.16" flate2 = { version = "1.0.26", features = ["zlib-ng"], default-features = false } fs3 = "0.5.0" diff --git a/cli/tests/integration/inspector_tests.rs b/cli/tests/integration/inspector_tests.rs index f94dd221b..6b2deb0bf 100644 --- a/cli/tests/integration/inspector_tests.rs +++ b/cli/tests/integration/inspector_tests.rs @@ -110,7 +110,7 @@ impl InspectorTester { for msg in messages { let result = self .socket - .write_frame(Frame::text(msg.to_string().into_bytes())) + .write_frame(Frame::text(msg.to_string().into_bytes().into())) .await .map_err(|e| anyhow!(e)); self.handle_error(result); @@ -148,7 +148,7 @@ impl InspectorTester { loop { let result = self.socket.read_frame().await.map_err(|e| anyhow!(e)); let message = - String::from_utf8(self.handle_error(result).payload).unwrap(); + String::from_utf8(self.handle_error(result).payload.to_vec()).unwrap(); if (self.notification_filter)(&message) { return message; } @@ -540,7 +540,7 @@ async fn inspector_does_not_hang() { // Check that we can gracefully close the websocket connection. tester .socket - .write_frame(Frame::close_raw(vec![])) + .write_frame(Frame::close_raw(vec![].into())) .await .unwrap(); diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs index ce837a2a4..2ac6ed985 100644 --- a/cli/tests/integration/run_tests.rs +++ b/cli/tests/integration/run_tests.rs @@ -4158,26 +4158,26 @@ async fn websocketstream_ping() { tokio::spawn(async move { let mut ws = upgrade_fut.await.unwrap(); - ws.write_frame(fastwebsockets::Frame::text("A".as_bytes().to_vec())) + ws.write_frame(fastwebsockets::Frame::text(b"A"[..].into())) .await .unwrap(); ws.write_frame(fastwebsockets::Frame::new( true, fastwebsockets::OpCode::Ping, None, - vec![], + vec![].into(), )) .await .unwrap(); - ws.write_frame(fastwebsockets::Frame::text("B".as_bytes().to_vec())) + ws.write_frame(fastwebsockets::Frame::text(b"B"[..].into())) .await .unwrap(); let message = ws.read_frame().await.unwrap(); assert_eq!(message.opcode, fastwebsockets::OpCode::Pong); - ws.write_frame(fastwebsockets::Frame::text("C".as_bytes().to_vec())) + ws.write_frame(fastwebsockets::Frame::text(b"C"[..].into())) .await .unwrap(); - ws.write_frame(fastwebsockets::Frame::close_raw(vec![])) + ws.write_frame(fastwebsockets::Frame::close_raw(vec![].into())) .await .unwrap(); }); @@ -4271,7 +4271,7 @@ async fn websocket_server_multi_field_connection_header() { assert_eq!(message.opcode, fastwebsockets::OpCode::Close); assert!(message.payload.is_empty()); socket - .write_frame(fastwebsockets::Frame::close_raw(vec![])) + .write_frame(fastwebsockets::Frame::close_raw(vec![].into())) .await .unwrap(); assert!(child.wait().unwrap().success()); diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs index 5ac1f0197..81f358dd2 100644 --- a/ext/websocket/lib.rs +++ b/ext/websocket/lib.rs @@ -365,7 +365,7 @@ impl ServerWebSocket { pub async fn write_frame( self: &Rc<Self>, lock: AsyncMutFuture<()>, - frame: Frame, + frame: Frame<'_>, ) -> Result<(), AnyError> { lock.await; @@ -401,7 +401,6 @@ pub fn ws_create_server_stream( ws.set_writev(*USE_WRITEV); ws.set_auto_close(true); ws.set_auto_pong(true); - let rid = state.resource_table.add(ServerWebSocket::new(ws)); Ok(rid) } @@ -415,7 +414,7 @@ pub fn op_ws_send_binary(state: &mut OpState, rid: ResourceId, data: &[u8]) { let lock = resource.reserve_lock(); deno_core::task::spawn(async move { if let Err(err) = resource - .write_frame(lock, Frame::new(true, OpCode::Binary, None, data)) + .write_frame(lock, Frame::new(true, OpCode::Binary, None, data.into())) .await { resource.set_error(Some(err.to_string())); @@ -435,7 +434,7 @@ pub fn op_ws_send_text(state: &mut OpState, rid: ResourceId, data: String) { if let Err(err) = resource .write_frame( lock, - Frame::new(true, OpCode::Text, None, data.into_bytes()), + Frame::new(true, OpCode::Text, None, data.into_bytes().into()), ) .await { @@ -460,7 +459,7 @@ pub async fn op_ws_send_binary_async( let data = data.to_vec(); let lock = resource.reserve_lock(); resource - .write_frame(lock, Frame::new(true, OpCode::Binary, None, data)) + .write_frame(lock, Frame::new(true, OpCode::Binary, None, data.into())) .await } @@ -479,11 +478,13 @@ pub async fn op_ws_send_text_async( resource .write_frame( lock, - Frame::new(true, OpCode::Text, None, data.into_bytes()), + Frame::new(true, OpCode::Text, None, data.into_bytes().into()), ) .await } +const EMPTY_PAYLOAD: &[u8] = &[]; + #[op(fast)] pub fn op_ws_get_buffered_amount(state: &mut OpState, rid: ResourceId) -> u32 { state @@ -504,7 +505,9 @@ pub async fn op_ws_send_pong( .resource_table .get::<ServerWebSocket>(rid)?; let lock = resource.reserve_lock(); - resource.write_frame(lock, Frame::pong(vec![])).await + resource + .write_frame(lock, Frame::pong(EMPTY_PAYLOAD.into())) + .await } #[op] @@ -518,7 +521,10 @@ pub async fn op_ws_send_ping( .get::<ServerWebSocket>(rid)?; let lock = resource.reserve_lock(); resource - .write_frame(lock, Frame::new(true, OpCode::Ping, None, vec![])) + .write_frame( + lock, + Frame::new(true, OpCode::Ping, None, EMPTY_PAYLOAD.into()), + ) .await } @@ -535,7 +541,7 @@ pub async fn op_ws_close( .get::<ServerWebSocket>(rid)?; let frame = reason .map(|reason| Frame::close(code.unwrap_or(1005), reason.as_bytes())) - .unwrap_or_else(|| Frame::close_raw(vec![])); + .unwrap_or_else(|| Frame::close_raw(vec![].into())); resource.closed.set(true); let lock = resource.reserve_lock(); @@ -602,7 +608,7 @@ pub async fn op_ws_next_event( }; break match val.opcode { - OpCode::Text => match String::from_utf8(val.payload) { + OpCode::Text => match String::from_utf8(val.payload.to_vec()) { Ok(s) => { resource.string.set(Some(s)); MessageKind::Text as u16 @@ -613,7 +619,7 @@ pub async fn op_ws_next_event( } }, OpCode::Binary => { - resource.buffer.set(Some(val.payload)); + resource.buffer.set(Some(val.payload.to_vec())); MessageKind::Binary as u16 } OpCode::Close => { diff --git a/runtime/inspector_server.rs b/runtime/inspector_server.rs index 1a6706896..330e91c3a 100644 --- a/runtime/inspector_server.rs +++ b/runtime/inspector_server.rs @@ -325,13 +325,13 @@ async fn pump_websocket_messages( 'pump: loop { tokio::select! { Some(msg) = outbound_rx.next() => { - let msg = Frame::text(msg.content.into_bytes()); + let msg = Frame::text(msg.content.into_bytes().into()); let _ = websocket.write_frame(msg).await; } Ok(msg) = websocket.read_frame() => { match msg.opcode { OpCode::Text => { - if let Ok(s) = String::from_utf8(msg.payload) { + if let Ok(s) = String::from_utf8(msg.payload.to_vec()) { let _ = inbound_tx.unbounded_send(s); } } diff --git a/test_util/src/lib.rs b/test_util/src/lib.rs index 9b84db7f3..136576890 100644 --- a/test_util/src/lib.rs +++ b/test_util/src/lib.rs @@ -382,7 +382,7 @@ async fn ping_websocket_handler( let mut ws = fastwebsockets::FragmentCollector::new(ws); for i in 0..9 { - ws.write_frame(Frame::new(true, OpCode::Ping, None, vec![])) + ws.write_frame(Frame::new(true, OpCode::Ping, None, vec![].into())) .await .unwrap(); @@ -390,9 +390,11 @@ async fn ping_websocket_handler( assert_eq!(frame.opcode, OpCode::Pong); assert!(frame.payload.is_empty()); - ws.write_frame(Frame::text(format!("hello {}", i).as_bytes().to_vec())) - .await - .unwrap(); + ws.write_frame(Frame::text( + format!("hello {}", i).as_bytes().to_vec().into(), + )) + .await + .unwrap(); let frame = ws.read_frame().await.unwrap(); assert_eq!(frame.opcode, OpCode::Text); @@ -419,7 +421,7 @@ async fn close_websocket_handler( ) -> Result<(), anyhow::Error> { let mut ws = fastwebsockets::FragmentCollector::new(ws); - ws.write_frame(fastwebsockets::Frame::close_raw(vec![])) + ws.write_frame(fastwebsockets::Frame::close_raw(vec![].into())) .await .unwrap(); |