]> Untitled Git - lemmy.git/commitdiff
Adding websocket blocking.
authorDessalines <tyhou13@gmx.com>
Tue, 21 Apr 2020 21:57:20 +0000 (17:57 -0400)
committerDessalines <tyhou13@gmx.com>
Tue, 21 Apr 2020 21:57:20 +0000 (17:57 -0400)
server/src/websocket/server.rs

index 0e7c1a4af60e65f486ef6a1a9ca6958f1f37bea5..da5098e91790860ee96248a834dbf2627a44c0f7 100644 (file)
@@ -896,10 +896,18 @@ where
 
   let data = data.to_string();
   let op2 = op.clone();
+
   let fut = async move {
-    let parsed_data: Data = serde_json::from_str(&data)?;
-    let res = Oper::new(parsed_data).perform(pool, Some(ws_info))?;
-    to_json_string(&op, &res)
+    actix_web::web::block(move || {
+      let parsed_data: Data = serde_json::from_str(&data)?;
+      let res = Oper::new(parsed_data).perform(pool, Some(ws_info))?;
+      to_json_string(&op, &res)
+    })
+    .await
+    .map_err(|e| match e {
+      actix_web::error::BlockingError::Error(e) => e,
+      _ => APIError::err("Operation canceled").into(),
+    })
   };
 
   match op2 {