Skip to content

Commit e91418b

Browse files
committed
use block_in_place and undo the other accidental overwrite
1 parent 3afae29 commit e91418b

File tree

2 files changed

+31
-25
lines changed

2 files changed

+31
-25
lines changed

pointercrate-core-api/src/error.rs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ use pointercrate_core::error::PointercrateError;
66
use pointercrate_core::localization::{LocaleConfiguration, LANGUAGE};
77
use pointercrate_core_pages::error::ErrorFragment;
88
use pointercrate_core_pages::PageFragment;
9-
use rocket::futures;
109
use rocket::outcome::Outcome;
10+
use rocket::tokio::runtime::Handle;
11+
use rocket::tokio::task::block_in_place;
1112
use rocket::{
1213
http::{MediaType, Status},
1314
response::Responder,
@@ -47,16 +48,18 @@ impl<'r> Responder<'r, 'static> for ErrorResponder {
4748
let language = preferences.get(LOCALE_COOKIE_NAME).ok_or(Status::InternalServerError)?;
4849
let lang_id = LocaleConfiguration::get().by_code(language);
4950

50-
let fragment = futures::executor::block_on(async {
51-
LANGUAGE
52-
.scope(lang_id.language, async {
53-
PageFragment::from(ErrorFragment {
54-
status: self.error_code / 100,
55-
reason: status.reason_lossy().to_string(),
56-
message: self.message,
51+
let fragment = block_in_place(move || {
52+
Handle::current().block_on(async {
53+
LANGUAGE
54+
.scope(lang_id.language, async {
55+
PageFragment::from(ErrorFragment {
56+
status: self.error_code / 100,
57+
reason: status.reason_lossy().to_string(),
58+
message: self.message,
59+
})
5760
})
58-
})
59-
.await
61+
.await
62+
})
6063
});
6164

6265
Response::build_from(Page::new(fragment).respond_to(request)?).status(status).ok()

pointercrate-core-api/src/response.rs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ use pointercrate_core_pages::{
1010
head::{Head, HeadLike},
1111
PageConfiguration, PageFragment,
1212
};
13+
use rocket::tokio::runtime::Handle;
14+
use rocket::tokio::task::block_in_place;
1315
use rocket::{
14-
futures,
1516
http::{ContentType, Header, Status},
1617
response::Responder,
1718
serde::json::Json,
@@ -42,20 +43,22 @@ impl<'r, 'o: 'r> Responder<'r, 'o> for Page {
4243
let language = preferences.get(LOCALE_COOKIE_NAME).ok_or(Status::InternalServerError)?;
4344
let lang_id = LocaleConfiguration::get().by_code(language);
4445

45-
let (page_config, nav_bar, footer) = futures::executor::block_on(async {
46-
LANGUAGE
47-
.scope(lang_id.language, async {
48-
let page_config = request
49-
.rocket()
50-
.state::<fn() -> PageConfiguration>()
51-
.ok_or(Status::InternalServerError)?();
52-
53-
let nav_bar = page_config.nav_bar.render();
54-
let footer = page_config.footer.render();
55-
56-
Ok((page_config, nav_bar, footer))
57-
})
58-
.await
46+
let (page_config, nav_bar, footer) = block_in_place(move || {
47+
Handle::current().block_on(async {
48+
LANGUAGE
49+
.scope(lang_id.language, async {
50+
let page_config = request
51+
.rocket()
52+
.state::<fn() -> PageConfiguration>()
53+
.ok_or(Status::InternalServerError)?();
54+
55+
let nav_bar = page_config.nav_bar.render();
56+
let footer = page_config.footer.render();
57+
58+
Ok((page_config, nav_bar, footer))
59+
})
60+
.await
61+
})
5962
})?;
6063

6164
let fragment = self.0;

0 commit comments

Comments
 (0)