Skip to content

IQ did not successfully parse as Jingle: ParseError("Element transport must not have more than one web-socket child.") #87

@rodarima

Description

@rodarima

As commented in #69, with the meet.jit.si instance it seems to be a problem when parsing the IQ message, as it contains two web-socket children. I'm using the last commit in master a42e069 and the issue seems to persist as of 2023-06-24:

% GST_DEBUG=2 gst-meet -v --nick=robot --web-socket-url=wss://meet.jit.si/xmpp-websocket --room-name=testing-gst  --send-pipeline="audiotestsrc wave=sine is-live=true ! audioconvert ! audioresample ! opusenc name=audio"
...
2023-06-24T09:00:31.782511Z DEBUG XMPP    <<< <iq xmlns='jabber:client' to='eff97c0b-100b-4812-ab88-d078db3af7a5@meet.jit.si/_ffC_eFYxhek' type='set' xml:lang='en' from='testing-gst@conference.meet.jit.si/focus' id='ZWZmOTdjMGItMTAwYi00ODEyLWFiODgtZDA3OGRiM2FmN2E1QG1lZXQuaml0LnNpL19mZkNfZUZZeGhlawBGTTdFWi0xOTgwNTg0MwC6iP94aQ/MVg=='><jingle sid='dq1s3ded0k27n' action='session-initiate' xmlns='urn:xmpp:jingle:1' initiator='focus@auth.meet.jit.si/focus'><content creator='initiator' senders='both' name='audio'><description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio' maxptime='60'><payload-type clockrate='48000' id='111' channels='2' name='opus'><parameter value='10' name='minptime'/><parameter value='1' name='useinbandfec'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type id='126' clockrate='8000' name='telephone-event'/><rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' uri='urn:ietf:params:rtp-hdrext:ssrc-audio-level' id='1'/><rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01' id='5'/><rtcp-mux/><source xmlns='urn:xmpp:jingle:apps:rtp:ssma:0' ssrc='1414071450' name='jvb-a0'><ssrc-info owner='jvb' xmlns='http://jitsi.org/jitmeet'/><parameter xmlns='urn:xmpp:jingle:apps:rtp:1' value='mixedmslabel mixedlabelaudio0' name='msid'/></source></description><transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' ufrag='egn7j1h3ma4bjf' pwd='5r0m6g5qnl5p075geg9og0gr42'><web-socket url='wss://meet.jit.si:443/colibri-ws/jvb-42-126-24/9f94e557105628db/eff97c0b?pwd=5r0m6g5qnl5p075geg9og0gr42' xmlns='http://jitsi.org/protocol/colibri'/><web-socket url='wss://meet-jit-si-jvb-42-126-24.jitsi.net:443/colibri-ws/jvb-42-126-24/9f94e557105628db/eff97c0b?pwd=5r0m6g5qnl5p075geg9og0gr42' xmlns='http://jitsi.org/protocol/colibri'/><rtcp-mux/><fingerprint required='false' hash='sha-256' setup='actpass' xmlns='urn:xmpp:jingle:apps:dtls:0'>96:94:D5:65:28:19:81:08:FC:C5:C4:59:2E:58:2D:CB:5B:E1:32:FD:EE:B6:D1:8C:0D:F9:49:D0:7D:4C:3C:7D</fingerprint><candidate ip='140.238.69.61' type='srflx' priority='1694498815' id='b413ff7f00adc50fffffffff7dc444d' port='10000' rel-port='9' generation='0' protocol='udp' network='0' foundation='2' component='1' rel-addr='0.0.0.0'/></transport></content><content creator='initiator' senders='both' name='video'><description media='video' xmlns='urn:xmpp:jingle:apps:rtp:1'><payload-type id='100' clockrate='90000' name='VP8'><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='ccm' subtype='fir'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack' subtype='pli'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type id='107' clockrate='90000' name='H264'><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='ccm' subtype='fir'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack' subtype='pli'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter value='42e01f;level-asymmetry-allowed=1;packetization-mode=1;' name='profile-level-id'/></payload-type><payload-type id='101' clockrate='90000' name='VP9'><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='ccm' subtype='fir'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack' subtype='pli'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type id='96' clockrate='90000' name='rtx'><parameter value='100' name='apt'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='ccm' subtype='fir'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack' subtype='pli'/></payload-type><payload-type id='97' clockrate='90000' name='rtx'><parameter value='101' name='apt'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='ccm' subtype='fir'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0' type='nack' subtype='pli'/></payload-type><payload-type id='99' clockrate='90000' name='rtx'><parameter value='107' name='apt'/></payload-type><rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' uri='http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time' id='3'/><rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01' id='5'/><rtcp-mux/><source xmlns='urn:xmpp:jingle:apps:rtp:ssma:0' ssrc='3249223227' name='jvb-v0'><ssrc-info owner='jvb' xmlns='http://jitsi.org/jitmeet'/><parameter xmlns='urn:xmpp:jingle:apps:rtp:1' value='mixedmslabel mixedlabelvideo0' name='msid'/></source></description><transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' ufrag='egn7j1h3ma4bjf' pwd='5r0m6g5qnl5p075geg9og0gr42'><web-socket url='wss://meet.jit.si:443/colibri-ws/jvb-42-126-24/9f94e557105628db/eff97c0b?pwd=5r0m6g5qnl5p075geg9og0gr42' xmlns='http://jitsi.org/protocol/colibri'/><web-socket url='wss://meet-jit-si-jvb-42-126-24.jitsi.net:443/colibri-ws/jvb-42-126-24/9f94e557105628db/eff97c0b?pwd=5r0m6g5qnl5p075geg9og0gr42' xmlns='http://jitsi.org/protocol/colibri'/><rtcp-mux/><fingerprint required='false' hash='sha-256' setup='actpass' xmlns='urn:xmpp:jingle:apps:dtls:0'>96:94:D5:65:28:19:81:08:FC:C5:C4:59:2E:58:2D:CB:5B:E1:32:FD:EE:B6:D1:8C:0D:F9:49:D0:7D:4C:3C:7D</fingerprint><candidate ip='140.238.69.61' type='srflx' priority='1694498815' id='b413ff7f00adc50fffffffff7dc444d' port='10000' rel-port='9' generation='0' protocol='udp' network='0' foundation='2' component='1' rel-addr='0.0.0.0'/></transport></content><group xmlns='urn:xmpp:jingle:apps:grouping:0' semantics='BUNDLE'><content name='audio'/><content name='video'/></group><bridge-session xmlns='http://jitsi.org/protocol/focus' region='eu-west-2' id='9283052d-ebda-41c3-98ea-b33eff12429f'/></jingle></iq>
2023-06-24T09:00:31.813099Z DEBUG IQ did not successfully parse as Jingle: ParseError("Element transport must not have more than one web-socket child.")

Here is the message indented with xmllint --format:

<?xml version="1.0"?>
<iq xmlns="jabber:client" to="eff97c0b-100b-4812-ab88-d078db3af7a5@meet.jit.si/_ffC_eFYxhek" type="set" xml:lang="en" from="testing-gst@conference.meet.jit.si/focus" id="ZWZmOTdjMGItMTAwYi00ODEyLWFiODgtZDA3OGRiM2FmN2E1QG1lZXQuaml0LnNpL19mZkNfZUZZeGhlawBGTTdFWi0xOTgwNTg0MwC6iP94aQ/MVg==">
  <jingle xmlns="urn:xmpp:jingle:1" sid="dq1s3ded0k27n" action="session-initiate" initiator="focus@auth.meet.jit.si/focus">
    <content creator="initiator" senders="both" name="audio">
      <description xmlns="urn:xmpp:jingle:apps:rtp:1" media="audio" maxptime="60">
        <payload-type clockrate="48000" id="111" channels="2" name="opus">
          <parameter value="10" name="minptime"/>
          <parameter value="1" name="useinbandfec"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="transport-cc"/>
        </payload-type>
        <payload-type id="126" clockrate="8000" name="telephone-event"/>
        <rtp-hdrext xmlns="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0" uri="urn:ietf:params:rtp-hdrext:ssrc-audio-level" id="1"/>
        <rtp-hdrext xmlns="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0" uri="http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" id="5"/>
        <rtcp-mux/>
        <source xmlns="urn:xmpp:jingle:apps:rtp:ssma:0" ssrc="1414071450" name="jvb-a0">
          <ssrc-info xmlns="http://jitsi.org/jitmeet" owner="jvb"/>
          <parameter xmlns="urn:xmpp:jingle:apps:rtp:1" value="mixedmslabel mixedlabelaudio0" name="msid"/>
        </source>
      </description>
      <transport xmlns="urn:xmpp:jingle:transports:ice-udp:1" ufrag="egn7j1h3ma4bjf" pwd="5r0m6g5qnl5p075geg9og0gr42">
        <web-socket xmlns="http://jitsi.org/protocol/colibri" url="wss://meet.jit.si:443/colibri-ws/jvb-42-126-24/9f94e557105628db/eff97c0b?pwd=5r0m6g5qnl5p075geg9og0gr42"/>
        <web-socket xmlns="http://jitsi.org/protocol/colibri" url="wss://meet-jit-si-jvb-42-126-24.jitsi.net:443/colibri-ws/jvb-42-126-24/9f94e557105628db/eff97c0b?pwd=5r0m6g5qnl5p075geg9og0gr42"/>
        <rtcp-mux/>
        <fingerprint xmlns="urn:xmpp:jingle:apps:dtls:0" required="false" hash="sha-256" setup="actpass">96:94:D5:65:28:19:81:08:FC:C5:C4:59:2E:58:2D:CB:5B:E1:32:FD:EE:B6:D1:8C:0D:F9:49:D0:7D:4C:3C:7D</fingerprint>
        <candidate ip="140.238.69.61" type="srflx" priority="1694498815" id="b413ff7f00adc50fffffffff7dc444d" port="10000" rel-port="9" generation="0" protocol="udp" network="0" foundation="2" component="1" rel-addr="0.0.0.0"/>
      </transport>
    </content>
    <content creator="initiator" senders="both" name="video">
      <description xmlns="urn:xmpp:jingle:apps:rtp:1" media="video">
        <payload-type id="100" clockrate="90000" name="VP8">
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="ccm" subtype="fir"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack" subtype="pli"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="transport-cc"/>
        </payload-type>
        <payload-type id="107" clockrate="90000" name="H264">
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="ccm" subtype="fir"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack" subtype="pli"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="transport-cc"/>
          <parameter value="42e01f;level-asymmetry-allowed=1;packetization-mode=1;" name="profile-level-id"/>
        </payload-type>
        <payload-type id="101" clockrate="90000" name="VP9">
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="ccm" subtype="fir"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack" subtype="pli"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="transport-cc"/>
        </payload-type>
        <payload-type id="96" clockrate="90000" name="rtx">
          <parameter value="100" name="apt"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="ccm" subtype="fir"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack" subtype="pli"/>
        </payload-type>
        <payload-type id="97" clockrate="90000" name="rtx">
          <parameter value="101" name="apt"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="ccm" subtype="fir"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack"/>
          <rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack" subtype="pli"/>
        </payload-type>
        <payload-type id="99" clockrate="90000" name="rtx">
          <parameter value="107" name="apt"/>
        </payload-type>
        <rtp-hdrext xmlns="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0" uri="http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time" id="3"/>
        <rtp-hdrext xmlns="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0" uri="http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" id="5"/>
        <rtcp-mux/>
        <source xmlns="urn:xmpp:jingle:apps:rtp:ssma:0" ssrc="3249223227" name="jvb-v0">
          <ssrc-info xmlns="http://jitsi.org/jitmeet" owner="jvb"/>
          <parameter xmlns="urn:xmpp:jingle:apps:rtp:1" value="mixedmslabel mixedlabelvideo0" name="msid"/>
        </source>
      </description>
      <transport xmlns="urn:xmpp:jingle:transports:ice-udp:1" ufrag="egn7j1h3ma4bjf" pwd="5r0m6g5qnl5p075geg9og0gr42">
        <web-socket xmlns="http://jitsi.org/protocol/colibri" url="wss://meet.jit.si:443/colibri-ws/jvb-42-126-24/9f94e557105628db/eff97c0b?pwd=5r0m6g5qnl5p075geg9og0gr42"/>
        <web-socket xmlns="http://jitsi.org/protocol/colibri" url="wss://meet-jit-si-jvb-42-126-24.jitsi.net:443/colibri-ws/jvb-42-126-24/9f94e557105628db/eff97c0b?pwd=5r0m6g5qnl5p075geg9og0gr42"/>
        <rtcp-mux/>
        <fingerprint xmlns="urn:xmpp:jingle:apps:dtls:0" required="false" hash="sha-256" setup="actpass">96:94:D5:65:28:19:81:08:FC:C5:C4:59:2E:58:2D:CB:5B:E1:32:FD:EE:B6:D1:8C:0D:F9:49:D0:7D:4C:3C:7D</fingerprint>
        <candidate ip="140.238.69.61" type="srflx" priority="1694498815" id="b413ff7f00adc50fffffffff7dc444d" port="10000" rel-port="9" generation="0" protocol="udp" network="0" foundation="2" component="1" rel-addr="0.0.0.0"/>
      </transport>
    </content>
    <group xmlns="urn:xmpp:jingle:apps:grouping:0" semantics="BUNDLE">
      <content name="audio"/>
      <content name="video"/>
    </group>
    <bridge-session xmlns="http://jitsi.org/protocol/focus" region="eu-west-2" id="9283052d-ebda-41c3-98ea-b33eff12429f"/>
  </jingle>
</iq>

I assume this is a problem related with the xmpp-rs parser. As a workaround I was trying to remove one of the web-socket children (similar to a42e069), but I'm not familiar with the xmpp API and I'm not very fluent in rust.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions