Skip to content

Commit

Permalink
Fix crash when error_event does not have "message" or "error" fields (#…
Browse files Browse the repository at this point in the history
…37)

* fix crash when error_event does not have  or  fields

* get rid of unwraps

* add comment

* fix clippy warning
  • Loading branch information
romamik authored May 24, 2024
1 parent 1b2e1cf commit a865751
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions ewebsock/src/web.rs
Original file line number Diff line number Diff line change
Expand Up @@ -150,12 +150,15 @@ pub(crate) fn ws_connect_impl(
{
let on_event = on_event.clone();
let onerror_callback = Closure::wrap(Box::new(move |error_event: web_sys::ErrorEvent| {
log::error!(
"error event: {}: {:?}",
error_event.message(),
error_event.error()
);
on_event(WsEvent::Error(error_event.message()));
// using reflect instead of error_event.message() to avoid panic on null
let message = js_sys::Reflect::get(&error_event, &"message".into()).unwrap_or_default();
let error = js_sys::Reflect::get(&error_event, &"error".into()).unwrap_or_default();
log::error!("error event: {:?}: {:?}", message, error);
on_event(WsEvent::Error(
message
.as_string()
.unwrap_or_else(|| "Unknown error".to_owned()),
));
}) as Box<dyn FnMut(web_sys::ErrorEvent)>);
socket.set_onerror(Some(onerror_callback.as_ref().unchecked_ref()));
onerror_callback.forget();
Expand Down

0 comments on commit a865751

Please sign in to comment.