14. Modifying an Existing Session
14 Ändern einer bestehenden Sitzung (Modifying an Existing Session)
Um eine bestehende Sitzung zu ändern, erstellt der UAC eine neue INVITE-Anfrage (re-INVITE) innerhalb des Dialogs. Das re-INVITE enthält eine neue Sitzungsbeschreibung und schlägt Änderungen der Medienparameter (Codec-Wechsel, Hinzufügen eines neuen Medienstroms usw.) vor.
Dieses re-INVITE bildet eine neue INVITE-Transaktion und verwendet wieder die Call-ID, das From-Tag und das To-Tag des bestehenden Dialogs. Der CSeq muss ein neuer Wert sein.
Die Verarbeitung des re-INVITE ähnelt der des initialen INVITE, mit dem Unterschied, dass die laufende Sitzung bereits besteht. Empfängt ein UAS ein re-INVITE, entscheidet er, die bestehende Sitzung mit dem neuen Angebot zu aktualisieren oder sie abzulehnen.
Empfängt der UAC eine 2xx-Antwort auf das re-INVITE, MUSS er ein ACK senden. Der Angebot/Antwort-Austausch folgt denselben Regeln wie das initiale INVITE.
Tritt ein Konflikt (Glare) auf, also versuchen beide UAs gleichzeitig, die Sitzung zu ändern, wird dieser gemäß Abschnitt 14.2 gelöst. Im Allgemeinen lehnt der UAS das re-INVITE mit einer 491 (Request Pending)-Antwort ab, und der UAC wiederholt es nach einer zufälligen Verzögerung.
Zum Beenden der Sitzung wird die BYE-Anfrage verwendet (Abschnitt 15). BYE wird im Dialog gesendet und beendet die Sitzung.