メインコンテンツまでスキップ

9. CreatePermission (パーミッション作成)

TURNは、クライアントがサーバー上でパーミッションをインストールまたは更新するための2つの方法をサポートしています。このセクションでは、1つの方法であるCreatePermissionリクエストについて説明します。

CreatePermissionリクエストは、セクション10のSendメカニズムまたはセクション11のチャネルメカニズムと組み合わせて使用できます。

9.1. Forming a CreatePermission Request (CreatePermissionリクエストの構成)

1つ以上のパーミッションをインストールまたは更新したいクライアントは、サーバーにCreatePermissionリクエストを送信できます。

CreatePermissionリクエストを構成する際、クライアントは少なくとも1つのXOR-PEER-ADDRESS属性を含めなければならず (MUST)、複数のそのような属性を含めてもよいです (MAY)。各XOR-PEER-ADDRESS属性のIPアドレス部分には、パーミッションをインストールまたは更新すべきIPアドレスが含まれます。各XOR-PEER-ADDRESS属性のポート部分は無視され、任意の値にすることができます。さまざまなXOR-PEER-ADDRESS属性は、任意の順序で出現できます。

9.2. Receiving a CreatePermission Request (CreatePermissionリクエストの受信)

サーバーがCreatePermissionリクエストを受信すると、セクション4の規定に加えて、ここで言及されている特定のルールに従って処理します。

メッセージの有効性がチェックされます。CreatePermissionリクエストは、少なくとも1つのXOR-PEER-ADDRESS属性を含まなければならず (MUST)、複数のそのような属性を含んでもよいです (MAY)。そのような属性が存在しない場合、またはこれらの属性のいずれかが無効な場合、400 (Bad Request) エラーが返されます。リクエストが有効であるが、サーバーが容量制限などの理由でリクエストを満たすことができない場合、508 (Insufficient Capacity) エラーが返されます。

サーバーは、XOR-PEER-ADDRESS属性で許可されるIPアドレスに制限を課してもよいです (MAY) -- 値が許可されていない場合、サーバーは403 (Forbidden) エラーでリクエストを拒否します。

メッセージが有効で、サーバーがリクエストを実行できる場合、サーバーは、セクション8で説明されているように、各XOR-PEER-ADDRESS属性に含まれるIPアドレスのパーミッションをインストールまたは更新します。各属性のポート部分は無視され、任意の値にすることができます。

次に、サーバーはCreatePermission成功応答で応答します。成功応答には必須の属性はありません。

注意: サーバーは、「ステートレススタックアプローチ」を使用してUDP上のCreatePermissionリクエストのべき等性を実装するために特別なことをする必要はありません。再送信されたCreatePermissionリクエストは、単にパーミッションを更新します。

9.3. Receiving a CreatePermission Response (CreatePermission応答の受信)

クライアントが有効なCreatePermission成功応答を受信した場合、クライアントは、パーミッションがインストールまたは更新されたことを示すためにデータ構造を更新します。