Conversations icon indicating copy to clipboard operation
Conversations copied to clipboard

Video call initiated from conversion to aTalk always failed with only video stream established

Open cmeng-git opened this issue 3 years ago • 0 comments

After the fix implemented for conversations: https://github.com/iNPUTmice/Conversations/issues/4285 It is found that all media calls are now working except with only one instance where the video call is initiated from conversations.

The following aTalk logcat messages captured are for both the video and audio streams ICE connectivity check result: Please refer to Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols on the ICE check process flow.

After detailed investigations based on aTalk logcat messages, it seems that the problem lies within the conversation ICE implementation. In conclusion: Conversations does send the stun response and confirm the validated pair-candidate to aTalk for the video stream; however it seems that aTalk does not receive the stun response from conversations to confirm the validated pair-candidate for the audio stream. This leads to Error cannot send to remote peer for media: AUDIO; MediaStreamTarget with dataAddress null and controlAddress null Appreciate if the conversations team can do further investigation to confirm the finding.

Video ICE check results:

2022-02-27 12:42:16.653 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.ice.ConnectivityCheckClient.log() Pair succeeded: 192.168.1.167:5000/udp/host -> 192.168.1.37:47780/udp/host (video.RTP). Local ufrag c1tpj1fssnooj1
2022-02-27 12:42:16.655 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.socket.MergingDatagramSocket.log() Adding allowed address: 192.168.1.37:47780/udp
2022-02-27 12:42:16.657 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.ice.ConnectivityCheckClient.log() Pair validated: 192.168.1.167:5000/udp/host -> 192.168.1.37:47780/udp/host (video.RTP). Local ufrag c1tpj1fssnooj1
2022-02-27 12:42:16.663 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.ice.ConnectivityCheckClient.log() IsControlling: false USE-CANDIDATE:false. Local ufrag c1tpj1fssnooj1
2022-02-27 12:42:24.245 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.ice.CheckList.log() Selected pair for stream video.RTP: 192.168.1.167:5000/udp/host -> 192.168.1.37:47780/udp/host (video.RTP)
2022-02-27 12:42:24.246 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.ice.Agent.log() CheckList of stream video is COMPLETED

Audio ICE check results:

2022-02-27 12:42:16.734 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.ice.ConnectivityCheckClient.log() Pair succeeded: 192.168.1.167:5001/udp/host -> 192.168.1.37:56822/udp/host (audio.RTP). Local ufrag c1tpj1fssnooj1
2022-02-27 12:42:16.736 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.socket.MergingDatagramSocket.log() Adding allowed address: 192.168.1.37:56822/udp
2022-02-27 12:42:16.739 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.ice.ConnectivityCheckClient.log() Pair validated: 192.168.1.167:5001/udp/host -> 192.168.1.37:56822/udp/host (audio.RTP). Local ufrag c1tpj1fssnooj1
2022-02-27 12:42:16.740 27247-30294/org.atalk.android I/aTalk: [227] org.ice4j.ice.ConnectivityCheckClient.log() IsControlling: false USE-CANDIDATE:false. Local ufrag c1tpj1fssnooj1
2022-02-27 12:42:31.633 27247-30825/org.atalk.android I/(TransportManager.java:413)#sendHolePunchPacket: Send NAT hole punch packets to port for media: AUDIO
2022-02-27 12:42:31.634 27247-30825/org.atalk.android E/(TransportManager.java:444)#sendHolePunchPacket: Error cannot send to remote peer for media: AUDIO; MediaStreamTarget with dataAddress null and controlAddress null

cmeng-git avatar Feb 27 '22 05:02 cmeng-git