I'm trying to test an ICE-UDP + DTLS-SRTP implementation with Conversations, but the latter keeps closing the Jingle session with the "failed-application" reason, whether I'm initiating or accepting it on the other side, and with one proposed payload matching that proposed by Conversations itself. I don't have it at hand myself (though perhaps should set an Android emulator, just expecting it to be messy), so the testing/debugging is tricky, but does something look wrong in <https://paste.uberspace.net/jingle-ice-udp-dtls-srtp.xml> (the session-initiate I'm sending)?
emushas left
flow
I would always hope that error responses contain a detailed reason why the application (or the used library) felt like returning an error response
flow
defanor, do you have the error response? is there anything in the adb log from conversations
larmahas joined
flow
usually the next thing I'd do is to identify the code site in conversations where the error response is created
defanor
flow, nothing but the "failed-application" element in the reason given in the session-terminate response, and unfortunately no adb log available (the Conversations instance I tried to test it with is just on someone else's phone, not nearby). Perhaps will indeed try to dive into those sources now.
flow
imagine how nice it would be if conversations would put some detailed information in the error response
flow
and if it's just the coordinations of the source file where the error is created
flow
stacktrace would even be better
flow
add some related state on top of it and $$$
dezanthas joined
SouLhas left
SouLhas joined
defanor
Apparently it happens if anything fails in the WebRTC setup function (setupWebRTC in JingleRtpConnection.java), and looks like there's quite a few things that can fail.
goffihas left
goffihas joined
sanderhas joined
flow
looks like even the exception isn't logged here :(
wurstsalat
Someone summon Daniel
marc0shas left
marc0shas joined
flow
or join the conversations MUC and suggest that improve the logging and the error response stanza
PapaTutuWawahas joined
defanor
Indeed, will try that. And maybe will find out there how it's run on desktops.
flow
defanor, usually via an Android Virtual Device (AVD) which an be created using the Android SDK
flow
tl;dr: simply install Android Studio :)
defanor
I see a few packages in Debian 11 repositories, like "android-sdk-platform-23", but I think I saw a remark somewhere in Conversations documentation that it needs Android API level (I think that's how it's called, not familiar with phone software development at all) 21 or 22 at most. Though maybe it was out of date.
flow
I fear I have to recommend to not use your distribution packages in this case…
flow
the Android development ecosystem is usually to fast moving for most distributions
defanorpanics.
flow
I mean you could of course try it, but i you want to have a good experience you want to install Android Studio and Co locally
defanor
Well, will ask about it in the Conversations MUC first -- likely somebody there knows whether it'd work. I just prefer to keep the system relatively clean, with software coming from the system repositories and being managed/updated all at once. Though there always are VMs or containers, too.
marchas left
marchas joined
emushas joined
antranigvhas joined
sanderhas left
sanderhas joined
antranigvhas left
antranigvhas joined
pasdesushihas left
sanderhas left
sanderhas joined
sonnyhas left
Link Mauvehas joined
malthehas joined
pasdesushihas joined
marc0shas left
marc0shas joined
marc0shas left
marc0shas joined
malthehas left
machas joined
antranigvhas left
xeckshas joined
marc0shas left
marc0shas joined
debaclehas joined
norayrhas left
norayrhas joined
marmistrzhas left
marmistrzhas joined
machas left
debaclehas left
xeckshas left
9lakeshas left
sanderhas left
lovetox
to the library developers, do you provide a method like getTag() which returns the first tag found within a stanza?
sanderhas joined
lovetox
or does this method always return a list? because tags can be more than once in a stanza
MattJ
In Prosody we provide one to get the first matching tag, and one to iterate
9lakeshas joined
MattJ
You can supply a name to get a named tag in the same namespace, or supply a namespace as well
defanor
I'm just exposing libxml2's structures, for use with its functions, but also a convenience search function to find the first matching element. But that's in C and while trying to avoid additional memory allocations, so forming a new list would be more awkward than in GC'd languages; in those functions for both cases may be appropriate.
dezanthas left
dezanthas joined
PapaTutuWawahas left
sonnyhas joined
Link Mauve
lovetox, in xmpp-rs we aim at providing high-level APIs instead of XML ones, in order to encourage developers to implement extensions in the library instead of directly in their software.
Link Mauve
We’re not there yet.
emus
Link Mauve: offtopic, should that listed on the xmpp library/tools page?
lovetox
Link Mauve, yeah i go also that way
lovetox
Gajim has only 90 matches for getTag anymore in a codebase with 100k loc
Link Mauve
:)
Link Mauve
emus, I’d say, not yet.
Link Mauve
It’s definitely not ready for prime time.
Link Mauve
Some parts are already pretty robust, like tokio-xmpp or xmpp-parsers, but the rest of the xmpp-rs APIs are not there yet.
sonnyhas left
sonnyhas joined
emus
ok, just let folks one once you think it is 🙂
Link Mauve
Sure!
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
marc0shas left
marc0shas joined
pasdesushihas left
pasdesushihas joined
emus
😃
xeckshas joined
goffihas left
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
malthehas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
atomicwatchhas joined
norayrhas left
PapaTutuWawahas joined
sonnyhas left
sonnyhas joined
xeckshas left
norayrhas joined
jgarthas joined
me9has joined
jgarthas left
Yagizаhas left
debaclehas joined
xeckshas joined
marmistrzhas left
marmistrzhas joined
marc0shas left
marc0shas joined
malthehas left
PapaTutuWawahas left
marmistrzhas left
marmistrzhas joined
goffihas joined
alacerhas joined
marmistrzhas left
pasdesushihas left
pasdesushihas joined
marmistrzhas joined
defanor
<https://datatracker.ietf.org/doc/html/rfc5763#section-6.7.1> says that "Implementations MUST treat all ICE candidate pairs associated with a single component as part of the same DTLS association.", but what about different components? It appears that Dino performs a handshake just on the first component, and then uses the obtained key material for all the components, skipping handshakes on those.
defanor
But I can't find whether any specification says that it's okay.
antranigvhas joined
antranigvhas left
antranigvhas joined
xeckshas left
goffihas left
xeckshas joined
antranigvhas left
spectrumhas left
malthehas joined
larmahas left
PapaTutuWawahas joined
spectrumhas joined
goffihas joined
antranigvhas joined
norayrhas left
norayrhas joined
malthehas left
PapaTutuWawahas left
PapaTutuWawahas joined
defanor
From <https://datatracker.ietf.org/doc/html/rfc5764#section-3>, it sound slike at least two sessions are used, with a DTLS association/connection per session.
marc0shas left
marc0shas joined
goffihas left
defanor
Well, unless there's multiplexing. But there's no multiplexing in this case.
marc0shas left
marc0shas joined
defanor
Oh, but DTLS-SRTP sessions can share DTLS sessions/handshakes. Looks like it's correct behaviour, then.