-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IQ did not successfully parse as Jingle: ParseError("Element transport must not have more than one web-socket child.") #87
Comments
I was able to work around it by using these two patches: First it seems there is a missing argument in gstmeet_connection_new(): From f775b23102f50bb9a776e9001c3c103d02447f32 Mon Sep 17 00:00:00 2001
From: Rodrigo Arias Mallo <[email protected]>
Date: Sat, 24 Jun 2023 11:34:37 +0200
Subject: [PATCH 1/2] Add room name argument in gstmeet_connection_new()
---
lib-gst-meet-c/src/lib.rs | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib-gst-meet-c/src/lib.rs b/lib-gst-meet-c/src/lib.rs
index 9d4be2d..2eb4f65 100644
--- a/lib-gst-meet-c/src/lib.rs
+++ b/lib-gst-meet-c/src/lib.rs
@@ -80,16 +80,19 @@ pub unsafe extern "C" fn gstmeet_connection_new(
context: *mut Context,
websocket_url: *const c_char,
xmpp_domain: *const c_char,
+ room_name: *const c_char,
tls_insecure: bool,
) -> *mut Connection {
let websocket_url = CStr::from_ptr(websocket_url);
let xmpp_domain = CStr::from_ptr(xmpp_domain);
+ let room_name = CStr::from_ptr(room_name);
(*context)
.runtime
.block_on(Connection::new(
&websocket_url.to_string_lossy(),
&xmpp_domain.to_string_lossy(),
Authentication::Anonymous,
+ &room_name.to_string_lossy(),
tls_insecure,
))
.map(|(connection, background)| {
--
2.41.0 And here I just parse it as a vector and then take the first element. From fe38d5f87173595848f1a5e1f442bb0822093f59 Mon Sep 17 00:00:00 2001
From: Rodrigo Arias Mallo <[email protected]>
Date: Sat, 24 Jun 2023 11:33:18 +0200
Subject: [PATCH 2/2] Parse web-socket as a list
For now only the first element is considered.
---
jitsi-xmpp-parsers/src/jingle_ice_udp.rs | 2 +-
lib-gst-meet/src/jingle.rs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/jitsi-xmpp-parsers/src/jingle_ice_udp.rs b/jitsi-xmpp-parsers/src/jingle_ice_udp.rs
index 39fc660..fb1a48a 100644
--- a/jitsi-xmpp-parsers/src/jingle_ice_udp.rs
+++ b/jitsi-xmpp-parsers/src/jingle_ice_udp.rs
@@ -24,7 +24,7 @@ generate_element!(
fingerprint: Option<Fingerprint> = ("fingerprint", JINGLE_DTLS) => Fingerprint,
/// Details of the Colibri WebSocket
- web_socket: Option<WebSocket> = ("web-socket", JITSI_COLIBRI) => WebSocket
+ web_socket: Vec<WebSocket> = ("web-socket", JITSI_COLIBRI) => WebSocket
]
);
diff --git a/lib-gst-meet/src/jingle.rs b/lib-gst-meet/src/jingle.rs
index 27479ca..0b94982 100644
--- a/lib-gst-meet/src/jingle.rs
+++ b/lib-gst-meet/src/jingle.rs
@@ -1466,7 +1466,7 @@ impl JingleSession {
remote_ssrc_map,
_ice_agent: ice_agent,
accept_iq_id: Some(accept_iq_id),
- colibri_url: ice_transport.web_socket.clone().map(|ws| ws.url),
+ colibri_url: ice_transport.web_socket.first().map(|ws| ws.url.clone()),
colibri_channel: None,
stats_handler_task: None,
pipeline_state_null_rx,
--
2.41.0 However I don't listen anything from the browser, although at least the "robot" participant appears unmuted and with the opus codec for audio. Maybe I'm messing something up with the gst pipeline. I attached the whole log with:
|
Nevermind, the audio was a problem of Firefox. In Chromium and on my phone is working fine with the above patches! |
Thanks for the patches. I noticed that lib-jitsi-meet has some special handling for the fact that JaaS returns more than one web-socket, but instead of taking the first they are filtering them out based on the domain. I'm going to copy that behaviour here to improve compatibility with JaaS. |
Hi @jbg , do you have any update on this patch integration ? |
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:
Here is the message indented with
xmllint --format
: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.
The text was updated successfully, but these errors were encountered: