buzzrelay icon indicating copy to clipboard operation
buzzrelay copied to clipboard

Posts delivered by buzzrelay is blocked by Misskey

Open Ninlives opened this issue 2 years ago • 5 comments

Problem

Subscribe to buzzrelay on Misskey does not show any posts because they are all blocked by the server with the following error:

failed(UnrecoverableError: skip: signerHost(<hostname/of/buzzrelay>) !== activity.id host(<relayed/instance>) 

Findings

Misskey will check if the host of the signature's keyId is equal to the host of the activity id, and activity will be blocked if they do not match: https://github.com/misskey-dev/misskey/blob/e2261b63e9053fb5116dd0ef393f464bf16da190/packages/backend/src/queue/processors/InboxProcessorService.ts#L159

Ninlives avatar Jun 23 '23 06:06 Ninlives

Simply replace the id field of the sent activity would fix the problem (I use format!("{}/{}", actor_id, post_url) to construct the id). By the way, all post relayed by buzzrelay appears to be a renote (boost in mastodon) by actor @instance-<host>, is this intended? A little bit annoying because I have to mute @instance-<host> otherwise every post would show up twice in the timeline :(

Ninlives avatar Jun 23 '23 07:06 Ninlives

id identifies a post so we cannot modify it or they show up as duplicates, which is what you witnessed.

I wonder if this is this really the part of Misskey that processes posts from relays?

astro avatar Jun 23 '23 17:06 astro

They are not duplicates, but Misskey would show both the renote event and the note being renoted in the global timeline, just like how it treats normal renotes, but not suitable for a relay in my opinion (How does Mastodon handle this? I guess the post being boosted is not shown on timeline?)

It is part of the process, the UnrecoverableError appears every time a relayed post arrive.

I'm still a noob in fediverse and my knowledge about ActivityPub is extremely limited so please correct me if I made stupid mistakes again, but according to my understanding of the protocol, id in the Announce activity should identify the Announce itself, not the post being announced. I did not find any direct evidence from the specification, but:

  1. Object Identifier indicates the id should be Publicly dereferencable URIs, such as HTTPS URIs, with their authority belonging to that of their originating server. Here the Announce activity is originated from buzzrelay, and the actor also lives on buzzrelay.
  2. All Create activity in example have different id with the post being created, my understanding is that this applies to Announce activity as well.

Ninlives avatar Jun 24 '23 01:06 Ninlives

Now running with 89938a7. Does that improve things? Does that break things?

It doesn't look like I have to actually serve these URLs. So far I'm not getting requests for them.

astro avatar Jun 25 '23 00:06 astro

It works fine on my Misskey instance, I hope it does not break other fediverse servers. The relayed posts are showed up as renotes, but this should be fixed by Misskey upstream.

Ninlives avatar Jun 25 '23 08:06 Ninlives