nikolat / akari-report

灯(AKARI)に関する情報を書き留めておくプロジェクト
1 stars 0 forks source link

_customrequestを使うとSHIORIレスポンスの改行が1つ多くなる #3

Closed nikolat closed 1 year ago

nikolat commented 3 years ago

公式ドキュメントの

array _customrequest( dict ref ) { string s = _eventdict[ ref["ID"] ]; if( s == "" ) s = _fncstr( ref["ID"], ref );

array ar; ar += "SHIORI/3.0 200 OK"; ar += "Sender: akari"; ar += "Charset: Shift_JIS"; ar += "Value: "+s; ar += ""; ar += "";

return ar; }

の通りに記述するとSHIORIレスポンスの空行が3行になる。 上記用例の空要素を1つ削除すれば_customrequestを省略した場合と同等となる。 ドキュメントの方が誤っている可能性もあるが、直感的に空要素を2個足した場合に空行2行となると理解する方が自然であるので、ドキュメントが正しく実装が間違っていると考えられる。

現状の回避策は空要素を1つ削除することであるが、そもそも空行が1個多いからといってSSPを始めとする処理系で大きな不具合は観測されておらず、影響はほぼ皆無である。 しかしSAORIとして利用する場合など呼び出し元の処理系は無限に想定され、プロトコル違反であることに変わりはなく修正されることが望ましい。

nikolat commented 1 year ago

SSTPの送信を最近よくやっていて、要素と改行がセットと考えるのが自然だと気付いた。 ドキュメントが間違っていると確認した。 本体のバグではないのでclose。