Misskey: Misskey 8.12.0から8.12.0以前のインスタンスをフォローできない

Created on 25 Aug 2018  ·  15Comments  ·  Source: syuilo/misskey

Summary


Misskey 8.12.0から8.12.0以前のインスタンスをフォローできない

Expected Behavior


フォローできる

Actual Behavior


フォローは成功したように見えるが、相手の方へは反映されていない

Steps to Reproduce

  1. 8.12.0以前のインスタンスのアカウントページに遷移
  2. フォローボタン押下

Environment



Misskey 8.12.0

Most helpful comment

  • URL直打ちでユーザー表示させてフォローする(やる人あまりいなそう) → 起きる可能性あり
  • TLに流れてきた人をフォローする(やりそう) → 起きる可能性あり
  • フォローされた人をフォロバする(やりそう) → 起きない

だったりするので、そこまで急がなくてもいいのかもしれない?

All 15 comments

Pleroma対応の変更が影響している??

8.10.0 <=> 8.12.0 で特に相互にフォロー/フォロー解除大丈夫そう

8.7.0(misskey.tmin.ml) <=> 8.12.0(misskey.m544.net) で確認したが特に問題なさそう

ちなみに発症したのははじめてインスタンスに認識されたアカウントだった。
既存はまだ確認してない。

相手先インスタンスに自分のアカウントが一度も認識されていない状態で送るとそうなった。
一度相手先インスタンスで、自分のIDを/@user@instanceで認識させてからフォロー送ったらフォローできた。バージョン関係ないかも。

両方とも新しいアカウントを作って、/@[email protected]でフォローして確認してみた

| 方向 | 通知 | 投稿 |
|:-:|:-:|:-:|
| 古 => 新 | 来る | 確認できない |
| 新 => 古 | 来ない | 届く |

新しいインスタンスから古いインスタンスをフォローしようとする時、できていない?

(相手先に自分のアカウントが一度も認識されていない状態)
自分のアカウント: @userA1@instanceA
相手のアカウント: @userB2@instanceB

1, instanceAで/@userB2@instanceBにアクセス

  1. フォローボタン押下
  2. instanceBの/@userB2ページを確認->フォローされていない
  3. instanceBで自分のアカウント/@userA1@instanceAにアクセス
  4. instanceAに戻り、/@userB2@instanceBにアクセス、フォロー解除->再度フォローボタン押下
  5. instanceBの/@userB2ページを確認->フォローされている

わかった

A(新)→B(旧) に 送ったときに、Bで未認知だと登録できない
A(新)→B(新) に 送ったときに、Bで未認知だと登録できない

本質的には、未認知ユーザが来たときの登録時のバグ(昔からある)
今回keyIdの形式を正しく修正したので顕在化したと思われる

新→新でダメなパターンは、受信側の新をさらに修正すれば大丈夫そう
新→旧パターンを救おうとすると、旧がバージョンアップするor新を戻すしかない

バージョン分布
https://fediverse.network/misskey

詳細はこんな感じ

ActivityPubでリクエストするときに署名用の公開鍵のIDを指定する箇所がある
この指定方法には以下の2形式あり

  1. http://host/~
    8.12.0以降のMisskey, Mastodon, Pleromaが使用
    Mastodonが受信OK, Misskeyが受信OK(後述のバグあり), Pleromaが受信OK
  2. acct:user@hostP
    8.12.0より前のMisskeyが使用
    Mastodonが受信OK, Misskeyが受信OK, Pleromaが受信NG

2番めのはレガシーな形式で一部実装でしか使えないので、今回Pleroma対応時に1番目で送信するように変更している。

問題はないはずだったのだけど、Misskeyが2番目の形式で受け取った場合の処理にバグがあったらしく
なぜかユーザーの解決に上記の公開鍵IDのURLを使用してしまう。
そのため、新形式で送られてきた場合は新ユーザーが解決できなくなった。

※ actor: https://example.com/users/xxxxxxを使用するべきところ
公開鍵ID: https://example.com/users/xxxxxx/publicを使用してしまう

なぜMastdonから新形式で来た時は大丈夫だったのかというと
actor: https://example.com/users/xxxxxx
公開鍵ID: https://example.com/users/xxxxxx#main-key
みたいになっているため、#以降はリモートリクエスト時に無視されてactorと同じになるためと思われる。

該当の受信部分を修正すれば、8.12.0 => 修正後バージョン 分は大丈夫になるが、
8.12.0以降 => 8.12.0以前(修正後バージョンより前) はダメなまま。

完全に解決させるためには、受信部分以外の修正以外にも何かをする必要がある
(全インスタンスがバージョンが上がるまでまつ or 旧形式に戻してしまう or 旧インスタンスだけリクエストを分ける)

( @syuilo Misskey旧バージョンへのサポートをどこまで行うかって方針決まっていますか?なければ明確にしておくと良いかもしれません。 )

個人的には、下手にリストを作って解決するぐらいだったら切り捨てた方がよいと思います。
リスト自体をメンテナンスするのが大変になるのと、鯖缶がリスト更新を待たないと更新できなくなってしまうので……
@AyaMorisawaさんがおっしゃるように、サポート範囲を決めた方がよいかと思います。

皆さんありがとうございます。
Misskeyのバージョンアップはそれほど大変な作業ではないと思いますし、こちらが何かするよりほかのインスタンスが最新バージョンに追従するのを待った方が無難だと思いますがいかがでしょうか

  • URL直打ちでユーザー表示させてフォローする(やる人あまりいなそう) → 起きる可能性あり
  • TLに流れてきた人をフォローする(やりそう) → 起きる可能性あり
  • フォローされた人をフォロバする(やりそう) → 起きない

だったりするので、そこまで急がなくてもいいのかもしれない?

https://fediverse.network/misskey
見る限りだと放置されてるインスタンス以外はバージョンアップついてきてるみたい?

Was this page helpful?
0 / 5 - 0 ratings