11. エラー処理
11. エラー処理
エラーを検出したエンドポイントは、そのエラーの存在をピアに通知すべきです (SHOULD)。トランスポートレベルとアプリケーションレベルの両方のエラーが接続全体に影響を与える可能性があります; セクション 11.1 を参照してください。アプリケーションレベルのエラーのみが単一のストリームに分離できます; セクション 11.2 を参照してください。
最も適切なエラーコード (セクション 20) は、エラーを通知するフレームに含めるべきです (SHOULD)。この仕様がエラー条件を識別する場合、使用されるエラーコードも識別します。
ステートレスリセット (セクション 10.3) は、CONNECTION_CLOSEまたはRESET_STREAMフレームで通知できるエラーには適していません。ステートレスリセットは、接続上でフレームを送信するために必要な状態を持つエンドポイントによって使用してはなりません (MUST NOT)。
11.1 接続エラー
プロトコルセマンティクスの明白な違反や接続全体に影響を与える状態の破損など、接続を使用不能にするエラーは、CONNECTION_CLOSEフレーム (セクション 19.19) を使用して通知しなければなりません (MUST)。
エンドポイントは、エラーが単一のストリームにのみ影響する場合でも、この方法で接続をクローズすることができます (MAY)。
エンドポイントは、送信するエラーフレームの数を制限しなければなりません (MUST)。エンドポイントは、そのフレームのみを含むパケット内でCONNECTION_CLOSEフレームを送信することができ (MAY)、CONNECTION_CLOSEフレームの受信に応答してこれを送信すべきです (SHOULD)。
11.2 ストリームエラー
アプリケーションレベルのエラーが単一のストリームに影響するが、それ以外では接続を回復可能な状態に保つ場合、エンドポイントは適切なエラーコードを持つRESET_STREAMフレーム (セクション 19.4) を送信して、影響を受けたストリームのみを終了できます。
RESET_STREAMはアプリケーションによって開始されなければなりませんが (MUST)、RESET_STREAMを送信する理由には、トランスポートによるストリーム内のエラーの検出が含まれる可能性があります。
RESET_STREAM以外では、エンドポイントは「Reset Sent」状態または任意の終端状態のストリーム上でフレームを送信してはなりません (MUST NOT) -- つまり、RESET_STREAMフレームを送信した後です。