forked from mirrors/relay
Fix inbox resolution, fix notsubscribed message
This commit is contained in:
parent
729e425e32
commit
17886732dd
2 changed files with 10 additions and 3 deletions
|
@ -63,7 +63,7 @@ impl ActorCache {
|
||||||
let input_host = id.as_url().host();
|
let input_host = id.as_url().host();
|
||||||
let accepted_actor_id = accepted_actor.id().ok_or(MyError::MissingId)?;
|
let accepted_actor_id = accepted_actor.id().ok_or(MyError::MissingId)?;
|
||||||
let actor_host = accepted_actor_id.as_url().host();
|
let actor_host = accepted_actor_id.as_url().host();
|
||||||
let inbox_host = accepted_actor.inbox().as_url().host();
|
let inbox_host = get_inbox(&accepted_actor).as_url().host();
|
||||||
|
|
||||||
if input_host != actor_host {
|
if input_host != actor_host {
|
||||||
let input_host = input_host.map(|h| h.to_string()).unwrap_or_default();
|
let input_host = input_host.map(|h| h.to_string()).unwrap_or_default();
|
||||||
|
@ -79,7 +79,7 @@ impl ActorCache {
|
||||||
return Err(MyError::HostMismatch(actor_host, inbox_host));
|
return Err(MyError::HostMismatch(actor_host, inbox_host));
|
||||||
}
|
}
|
||||||
|
|
||||||
let inbox = accepted_actor.inbox().clone();
|
let inbox = get_inbox(&accepted_actor).clone();
|
||||||
|
|
||||||
let actor = Actor {
|
let actor = Actor {
|
||||||
id: accepted_actor_id.clone(),
|
id: accepted_actor_id.clone(),
|
||||||
|
@ -335,6 +335,13 @@ impl ActorCache {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_inbox(actor: &AcceptedActors) -> &XsdAnyUri {
|
||||||
|
actor
|
||||||
|
.endpoints()
|
||||||
|
.and_then(|e| e.shared_inbox.as_ref())
|
||||||
|
.unwrap_or(actor.inbox())
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Actor {
|
pub struct Actor {
|
||||||
pub id: XsdAnyUri,
|
pub id: XsdAnyUri,
|
||||||
|
|
|
@ -166,7 +166,7 @@ async fn handle_undo(
|
||||||
jobs.queue(Forward::new(input, actor))?;
|
jobs.queue(Forward::new(input, actor))?;
|
||||||
return Ok(());
|
return Ok(());
|
||||||
} else {
|
} else {
|
||||||
return Err(MyError::NotSubscribed(id_string(input.id())?));
|
return Err(MyError::NotSubscribed(actor.inbox.to_string()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue