aboutsummaryrefslogtreecommitdiffstats
path: root/components/net/websocket_loader.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/net/websocket_loader.rs')
-rw-r--r--components/net/websocket_loader.rs27
1 files changed, 16 insertions, 11 deletions
diff --git a/components/net/websocket_loader.rs b/components/net/websocket_loader.rs
index 128436ac47c..0b5a81f47ae 100644
--- a/components/net/websocket_loader.rs
+++ b/components/net/websocket_loader.rs
@@ -43,7 +43,8 @@ use crate::async_runtime::HANDLE;
use crate::connector::{CACertificates, TlsConfig, create_tls_config};
use crate::cookie::ServoCookie;
use crate::fetch::methods::{
- should_request_be_blocked_by_csp, should_request_be_blocked_due_to_a_bad_port,
+ convert_request_to_csp_request, should_request_be_blocked_by_csp,
+ should_request_be_blocked_due_to_a_bad_port,
};
use crate::hosts::replace_host;
use crate::http_loader::HttpState;
@@ -168,12 +169,12 @@ fn setup_dom_listener(
trace!("handling WS DOM action: {:?}", dom_action);
match dom_action {
WebSocketDomAction::SendMessage(MessageData::Text(data)) => {
- if let Err(e) = sender.send(DomMsg::Send(Message::Text(data))) {
+ if let Err(e) = sender.send(DomMsg::Send(Message::Text(data.into()))) {
warn!("Error sending websocket message: {:?}", e);
}
},
WebSocketDomAction::SendMessage(MessageData::Binary(data)) => {
- if let Err(e) = sender.send(DomMsg::Send(Message::Binary(data))) {
+ if let Err(e) = sender.send(DomMsg::Send(Message::Binary(data.into()))) {
warn!("Error sending websocket message: {:?}", e);
}
},
@@ -245,7 +246,7 @@ async fn run_ws_loop(
};
match msg {
Message::Text(s) => {
- let message = MessageData::Text(s);
+ let message = MessageData::Text(s.as_str().to_owned());
if let Err(e) = resource_event_sender
.send(WebSocketNetworkEvent::MessageReceived(message))
{
@@ -255,7 +256,7 @@ async fn run_ws_loop(
}
Message::Binary(v) => {
- let message = MessageData::Binary(v);
+ let message = MessageData::Binary(v.to_vec());
if let Err(e) = resource_event_sender
.send(WebSocketNetworkEvent::MessageReceived(message))
{
@@ -390,14 +391,18 @@ fn connect(
RequestPolicyContainer::PolicyContainer(container) => container.to_owned(),
};
- let (check_result, violations) = should_request_be_blocked_by_csp(&request, &policy_container);
+ if let Some(csp_request) = convert_request_to_csp_request(&request) {
+ let (check_result, violations) =
+ should_request_be_blocked_by_csp(&csp_request, &policy_container);
- if !violations.is_empty() {
- let _ = resource_event_sender.send(WebSocketNetworkEvent::ReportCSPViolations(violations));
- }
+ if !violations.is_empty() {
+ let _ =
+ resource_event_sender.send(WebSocketNetworkEvent::ReportCSPViolations(violations));
+ }
- if check_result == csp::CheckResult::Blocked {
- return Err("Blocked by Content-Security-Policy".to_string());
+ if check_result == csp::CheckResult::Blocked {
+ return Err("Blocked by Content-Security-Policy".to_string());
+ }
}
let client = match create_request(