5.7. Processing a Rollback
5.7. Processing a Rollback
Un rollback PEUT être effectué si le PeerConnection est dans un état quelconque sauf "stable". Cela signifie que les offres et les réponses provisoires peuvent toutes deux faire l'objet d'un rollback. Le rollback ne peut servir qu'à annuler des modifications proposées; il n'existe pas de prise en charge pour revenir d'un état "stable" vers un état "stable" antérieur. Si un rollback est tenté dans l'état "stable", le traitement DOIT s'arrêter et une erreur DOIT être renvoyée. Notez que cela implique qu'une fois que l'answerer a exécuté setLocalDescription avec sa réponse, cela ne peut pas faire l'objet d'un rollback.
L'effet du rollback DOIT être le même, que l'on appelle setLocalDescription ou setRemoteDescription.
Pour traiter un rollback, une implémentation JSEP abandonne la transaction offre/réponse en cours, fixe l'état de signalisation à "stable", et fixe la description locale et/ou distante en attente (voir les sections 4.1.14 et 4.1.16) à "null". Toute ressource ou tout candidat alloué par la description locale abandonnée est supprimé; tout média reçu est traité conformément aux descriptions locales et distantes précédentes.
Un rollback dissocie tout RtpTransceiver qui avait été associé à des sections "m=" par l'application de la description de session annulée (voir les sections 5.10 et 5.9). Cela signifie que certains RtpTransceivers auparavant associés ne seront plus associés à aucune section "m="; dans de tels cas, la valeur de la propriété mid du RtpTransceiver DOIT être fixée à "null", et la correspondance entre le transceiver et l'index de sa section "m=" DOIT être supprimée. Les RtpTransceivers créés en appliquant une offre distante qui a ensuite été annulée par rollback DOIVENT être arrêtés et retirés du PeerConnection. Toutefois, un RtpTransceiver NE DOIT PAS être retiré si une piste a été attachée au RtpTransceiver via la méthode addTrack. Cela permet à une application d'appeler addTrack, puis setRemoteDescription avec une offre, puis d'annuler cette offre par rollback, puis d'appeler createOffer et d'obtenir une section "m=" pour la piste ajoutée dans l'offre générée.