Comments (2)
Does this happen with the Jitsi desktop client? Do you know what Agent APIs it uses when it does a "content-add"?
from ice4j.
The problem is observed on aTalk, development is on Ubuntu 22.04. Jitsi desktop failed to install on this ubuntu platform. When using virtualBox, Jitsi cannot recognise the pass-through camera device. Do I am unable to verify Jitsi desktop. However based on the ice4j source, I believe this should happen on Jisti desktop.
With reference to ice4j 3.0 source:
The Agent will scheduleTermination() at the end of the audio call setup since all remote pairing process has completed.
This will set ConnectivityCheckClient#stopped to true;
/**
* Initializes and starts the {@link #terminationFuture}
*/
private void scheduleTermination()
{
/*
* RFC 5245 says: Once ICE processing has reached the Completed state for
* all peers for media streams using those candidates, the agent SHOULD
* wait an additional three seconds, and then it MAY cease responding to
* checks or generating triggered checks on that candidate. It MAY free
* the candidate at that time.
* <p>
* This method is scheduling such a termination.
*/
boolean runTerminationImmediately = false;
synchronized (terminationFutureSyncRoot) {
if (terminationFuture == null) {
long terminationDelay = Integer.getInteger(StackProperties.TERMINATION_DELAY, DEFAULT_TERMINATION_DELAY);
if (terminationDelay > 0) {
terminationFuture = agentTasksScheduler.schedule(
terminationRunnable,
terminationDelay,
TimeUnit.MILLISECONDS);
}
else {
runTerminationImmediately = true;
}
}
}
if (runTerminationImmediately) {
terminationRunnable.run();
}
}
When user enables video in a audio only call, the app executes the jingle content-add as aspected. From aTalk logcat, I see that all process in video call setup is working correctly. However it does not proceed with the pairing check after
2022-06-14 07:59:40.180 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.ConnectivityCheckClient.log() Start connectivity checks. Local ufrag ps6s1g5fo3vfu.
On debug, the whole process does not proceed is due to stopped flag is set to true as explained above. I see that there is no other area the stopped flag get reinit when the following is being called:
2022-06-14 07:59:40.174 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.Agent.log() Start ICE connectivity establishment. Local ufrag ps6s1g5fo3vfu
due to
if (stopped) {
return;
}
/**
* Starts client connectivity checks for the {@link CandidatePair}s in <tt>checkList</tt>
*
* @param checkList the {@link CheckList} to start client side connectivity checks for.
*/
public void startChecks(CheckList checkList)
{
synchronized (paceMakers) {
if (stopped) {
return;
}
PaceMaker paceMaker = new PaceMaker(checkList);
paceMakers.add(paceMaker);
paceMaker.schedule();
}
}
// =========== aTalk logcat ===============
2022-06-14 07:59:40.155 10876-32575/org.atalk.android D/SMACK: RECV (0):
<iq xml:lang='en' to='[email protected]/atalk' from='[email protected]/atalk' type='set' id='FSEHI-25'>
<jingle xmlns='urn:xmpp:jingle:1' initiator='[email protected]/atalk' action='transport-info' sid='QD8F57XNFAMQUSA7C4BEKBFZ'>
<content creator='initiator' name='video' senders='initiator'>
<transport xmlns='urn:xmpp:jingle:transports:ice-udp:1' ufrag='drdmo1g5fo4355' pwd='6kur1rqvnddla7o8i6rkmmtg91'>
<rtcp-mux/>
<candidate foundation='1' component='1' protocol='udp' priority='2130706431' generation='0' id='5' ip='fe80::362d:dff:fe00:ae96' port='5001' type='host' network='0'/>
<candidate foundation='2' component='1' protocol='udp' priority='2130706431' generation='0' id='6' ip='192.168.1.37' port='5001' type='host' network='0'/>
<candidate foundation='4' component='1' protocol='udp' priority='1677724415' generation='0' id='7' ip='42.60.7.13' port='1404' type='srflx' rel-addr='192.168.1.37' rel-port='5001' network='0'/>
<candidate foundation='3' component='1' protocol='udp' priority='2815' generation='0' id='8' ip='42.60.7.13' port='51007' type='relay' network='0'/>
</transport>
</content>
</jingle>
</iq>
2022-06-14 07:59:40.161 10876-32575/org.atalk.android D/SMACK: RECV (0):
<r xmlns='urn:xmpp:sm:3'/>
2022-06-14 07:59:40.162 10876-12288/org.atalk.android D/(OperationSetBasicTelephonyJabberImpl.java:955)#processJingle: ### Processing Jingle IQ (transport-info: FSEHI-25); callPeer: [email protected]/atalk
2022-06-14 07:59:40.162 10876-12288/org.atalk.android D/(OperationSetBasicTelephonyJabberImpl.java:1193)#processTransportInfo: ### Process Jingle transport-info (session-accept) media: []; null
2022-06-14 07:59:40.163 10876-12288/org.atalk.android D/(CallPeerJabberImpl.java:873)#processOfferTransportInfo: ### Processing Jingle (transport-info) for media: [video] : FSEHI-25
2022-06-14 07:59:40.164 10876-32574/org.atalk.android D/SMACK: SENT (0):
<iq to='[email protected]/atalk' id='FSEHI-25' type='result'>
</iq>
<a xmlns='urn:xmpp:sm:3' h='403'/>
2022-06-14 07:59:40.168 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.Component.log() Add remote candidate for video.RTP: [fe80::362d:dff:fe00:ae96]:5001/udp/host
2022-06-14 07:59:40.169 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.Component.log() Add remote candidate for video.RTP: 192.168.1.37:5001/udp/host
2022-06-14 07:59:40.171 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.Component.log() Add remote candidate for video.RTP: 42.60.7.13:1404/udp/srflx
2022-06-14 07:59:40.172 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.Component.log() Add remote candidate for video.RTP: 42.60.7.13:51007/udp/relay
2022-06-14 07:59:40.174 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.Agent.log() Start ICE connectivity establishment. Local ufrag ps6s1g5fo3vfu
2022-06-14 07:59:40.175 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.Agent.log() Init checklist for stream video
2022-06-14 07:59:40.177 10876-12288/org.atalk.android D/aTalk: [1310] org.ice4j.ice.IceMediaStream.log() Checklist initialized.
2022-06-14 07:59:40.178 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.Agent.log() ICE state changed from Waiting to Running. Local ufrag ps6s1g5fo3vfu
2022-06-14 07:59:40.180 10876-12288/org.atalk.android I/aTalk: [1310] org.ice4j.ice.ConnectivityCheckClient.log() Start connectivity checks. Local ufrag ps6s1g5fo3vfu
from ice4j.
Related Issues (20)
- Using ice4j behind NLB in a VPC at AWS (Kubernetes) HOT 13
- NullPointerException with multiple network interfaces and NAT HOT 20
- Question: Is NOMINATE_BEST_RTT implemented? HOT 2
- ice4j unmaintained on Maven repo HOT 8
- ConcurrentModificationException HOT 2
- I can't manage to make org.ice4j.ice.harvest.DISABLE_LINK_LOCAL_ADDRESSES work HOT 2
- NullPointerException in MergingDatagraSocket HOT 3
- Java project can't import classes from 3.0-26-gf176d02 HOT 3
- QUESTION: How to connect faster? HOT 1
- Java 17: issues with classes in org.ice4j.socket.jdk8 HOT 3
- TURN(S) TCP support in ice4j HOT 7
- PseudoTcpSocket input stream doesn't support readNBytes
- Random instances of websocket disconnects in jitsi
- ice4j 3.0 does not generate the IPv4 srflx candidate when android device APN is set to IPv4/IPv6 HOT 3
- Contradicting candidate preferences HOT 1
- Add support of multiple streams with the same media type. HOT 6
- Parsing a Session Description on Android causes a NullPointerException. HOT 7
- unresolved address error while harvesting STUN candidates HOT 3
- Remove all mailinglist dead links HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ice4j.