Aller au contenu principal

5.8.1. Session-Level Parsing

5.8.1. Session-Level Parsing

D'abord, les lignes au niveau session (Session-Level) sont vérifiées et analysées. Ces lignes DOIVENT apparaître dans un ordre spécifique et avec une syntaxe spécifique, tels que définis dans [RFC4566], section 5. Notez que si les types de lignes particuliers (par ex. v=, c=) DOIVENT apparaître dans l'ordre défini, les lignes du même type (généralement a=) peuvent apparaître dans n'importe quel ordre.

Les lignes non-attribut suivantes n'ont pas de sens dans le contexte JSEP et PEUVENT être ignorées une fois vérifiées.

  • La ligne c= DOIT être vérifiée syntaxiquement, mais sa valeur sert uniquement à la détection d'incohérence ICE, comme défini dans [RFC8445], section 5.4. Notez que les implémentations JSEP ne devraient jamais rencontrer cette condition car ICE est requis pour WebRTC.

  • Les lignes i=, u=, e=, p=, t=, r=, z= et k= DOIVENT être vérifiées syntaxiquement, mais leurs valeurs ne sont pas utilisées autrement.

Les autres lignes non-attribut sont traitées comme suit :

  • La ligne v= DOIT avoir une version 0, comme spécifié dans [RFC4566], section 5.1.

  • La ligne o= DOIT être analysée comme spécifié dans [RFC4566], section 5.2.

  • La ligne b=, si présente, DOIT être analysée comme spécifié dans [RFC4566], section 5.8, et les valeurs bwtype et bandwidth stockées.

Enfin, les lignes d'attribut sont traitées. Un traitement spécifique DOIT être appliqué aux lignes d'attribut (a=) suivantes au niveau session :

  • Toute ligne a=group est analysée comme spécifié dans [RFC5888], section 5, et la sémantique du groupe ainsi que les mids sont stockés.

  • Si présente, une seule ligne a=ice-lite est analysée comme spécifié dans [RFC8839], section 5.3, et une valeur indiquant la présence d'ice-lite est stockée.

  • Si présente, une seule ligne a=ice-ufrag est analysée comme spécifié dans [RFC8839], section 5.4, et la valeur ufrag est stockée.

  • Si présente, une seule ligne a=ice-pwd est analysée comme spécifié dans [RFC8839], section 5.4, et la valeur du mot de passe est stockée.

  • Si présente, une seule ligne a=ice-options est analysée comme spécifié dans [RFC8839], section 5.6, et l'ensemble des options spécifiées est stocké.

  • Toute ligne a=fingerprint est analysée comme spécifié dans [RFC8122], section 5, et l'ensemble des valeurs d'empreinte et d'algorithme est stocké.

  • Si présente, une seule ligne a=setup est analysée comme spécifié dans [RFC4145], section 4, et la valeur setup est stockée.

  • Si présente, une seule ligne a=tls-id est analysée comme spécifié dans [RFC8842], section 5, et la valeur d'attribut est stockée.

  • Toute ligne a=identity est analysée et les valeurs d'identité sont stockées pour vérification ultérieure, comme spécifié dans [RFC8827], section 5.

  • Toute ligne a=extmap est analysée comme spécifié dans [RFC5285], section 5, et leurs valeurs sont stockées.

D'autres attributs sans rapport avec JSEP peuvent aussi être présents, et les implémentations DEVRAIENT traiter ceux qu'elles reconnaissent. Comme l'exige [RFC4566], section 5.13, les lignes d'attribut inconnues DOIVENT être ignorées.

Une fois toutes les lignes au niveau session analysées, le traitement continue avec les lignes des sections m=.