Add logging to find bug (ref #1283)

Also simplify check_object_domain()
pull/1292/head
Felix Ableitner 2020-11-30 18:24:10 +01:00
parent 7d7fe5962a
commit 8fc4e1ecfe
4 changed files with 17 additions and 6 deletions

1
Cargo.lock generated
View File

@ -1761,6 +1761,7 @@ dependencies = [
"async-trait",
"awc",
"background-jobs",
"backtrace",
"base64 0.13.0",
"bcrypt",
"chrono",

View File

@ -46,3 +46,4 @@ anyhow = "1.0"
thiserror = "1.0"
background-jobs = " 0.8"
reqwest = { version = "0.10", features = ["json"] }
backtrace = "0.3"

View File

@ -48,16 +48,14 @@ pub(in crate::objects) fn check_object_domain<T, Kind>(
where
T: Base + AsBase<Kind>,
{
let actor_id = if let Some(url) = expected_domain {
check_is_apub_id_valid(&url)?;
let object_id = if let Some(url) = expected_domain {
let domain = url.domain().context(location_info!())?;
apub.id(domain)?.context(location_info!())?
} else {
let actor_id = apub.id_unchecked().context(location_info!())?;
check_is_apub_id_valid(&actor_id)?;
actor_id
apub.id_unchecked().context(location_info!())?
};
Ok(actor_id.to_string())
check_is_apub_id_valid(&object_id)?;
Ok(object_id.to_string())
}
pub(in crate::objects) fn set_content_and_source<T, Kind1, Kind2>(

View File

@ -17,6 +17,7 @@ use activitystreams::{
};
use activitystreams_ext::Ext1;
use anyhow::Context;
use backtrace::Backtrace;
use lemmy_db::{
community::Community,
post::{Post, PostForm},
@ -32,6 +33,7 @@ use lemmy_utils::{
LemmyError,
};
use lemmy_websocket::LemmyContext;
use log::error;
use url::Url;
#[async_trait::async_trait(?Send)]
@ -130,6 +132,15 @@ impl FromApub for PostForm {
let community =
get_or_fetch_and_upsert_community(community_actor_id, context, request_counter).await?;
if community.local && creator.local {
let page_id = page.id_unchecked().context(location_info!())?;
let bt = Backtrace::new();
error!(
"Lemmy is parsing a local post as remote, page id: {}, stack trace: {:?}",
page_id, bt
);
}
let thumbnail_url = match &page.inner.image() {
Some(any_image) => Image::from_any_base(
any_image