5.3.2. Subsequent Answers (後続Answer)
5.3.2. Subsequent Answers (後続Answer)
createAnswer が 2 回目以降に呼び出される場合, またはローカル記述がすでに適用された後に呼び出される場合, 処理は初期アンサーとはやや異なります。
前回のアンサーが setLocalDescription により適用されていない, すなわち PeerConnection がまだ "have-remote-offer" 状態にある場合は, 初期アンサーを生成する手順に従わなければなりません (MUST), ただし次の制約のもとで行います。
- "o=" 行の各フィールドは, セッション記述が前回生成したアンサーから何らかの形で変化した場合にインクリメントしなければならない <session-version> フィールドを除き, 同一でなければなりません (MUST)。
いずれかのセッション記述が以前に setLocalDescription に渡されている場合は, 上記の "have-remote-offer" 状態の手順に従ってアンサーを生成しますが, 次の例外があります。
-
"s=" 行および "t=" 行は同一でなければなりません (MUST)。
-
各 "m=" 行および "c=" 行は, その "m=" セクションのデフォルト候補のポートとアドレスで埋めなければなりません (MUST)。[RFC8839] の第 4.2.1.2 節に記載のとおりです。なお, 状況によっては "m=" 行のプロトコルがデフォルト候補のものと一致しないことがあります。上記のとおり, "m=" 行のプロトコル値はオファーで提示された値と一致しなければなりません (MUST)。
-
各 "a=ice-ufrag" および "a=ice-pwd" 行は同一でなければなりません (MUST), ただし当該 "m=" セクションが再起動中の場合は除きます。その場合は [RFC8839] の第 4.4.1.1.1 節に従って新しい ICE クレデンシャルを生成しなければなりません (MUST)。当該 "m=" セクションが別の "m=" セクションにバンドルされている場合でも, ICE クレデンシャルを含んではなりません (MUST NOT)。
-
各 "a=tls-id" 行は同一でなければなりません (MUST), ただしオファラー側の "a=tls-id" 行が変わった場合は除きます。その場合は [RFC8842] の第 5.2 節に記載のとおり新しい tls-id 値を生成しなければなりません (MUST)。
-
オファラーが既存の DTLS アソシエーションを継続している場合, 各 "a=setup" 行はその既存の DTLS アソシエーションと整合する "active" または "passive" のロール値を使わなければなりません (MUST)。
-
RTCP マルチプレクシングを用いなければなりません (MUST)。かつ, 当該 "m=" セクションが以前 RTCP マルチプレクシングを用いていた場合に限り, "a=rtcp-mux" 行を挿入しなければなりません (MUST)。
-
当該 "m=" セクションが別の "m=" セクションにバンドルされておらず, かつ RTCP マルチプレクシングが有効でない場合, "a=rtcp" 属性行をデフォルト RTCP 候補のポートとアドレスで埋めなければなりません (MUST)。RTCP 候補がまだ収集されていない場合は, 上記の第 5.3.1 節に記載のとおりデフォルト値を使わなければなりません (MUST)。
-
当該 "m=" セクションが別の "m=" セクションにバンドルされていない場合, 直近の収集フェーズ (第 3.5.1 節参照) に収集された各候補について, [RFC8839] の第 5.1 節で定義されるとおり "a=candidate" 行を追加しなければなりません (MUST)。当該セクションの候補収集が完了している場合は, [RFC8840] の第 8.2 節に記載のとおり "a=end-of-candidates" 属性を追加しなければなりません (MUST)。当該 "m=" セクションが別の "m=" セクションにバンドルされている場合, "a=candidate" と "a=end-of-candidates" の両方を省略しなければなりません (MUST)。
-
停止していない RtpTransceiver については, トランシーバの方向やトラックが変わっても "a=msid" 行は同一でなければなりません (MUST)。現在の記述に "a=msid" 行がない場合は, 初期アンサーと同じ規則に従って "a=msid" 行を生成しなければなりません (MUST)。