linphone-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Linphone-developers] RTP streams running delayed with DNS set


From: Neil Sharp
Subject: [Linphone-developers] RTP streams running delayed with DNS set
Date: Wed, 15 Mar 2023 18:32:35 -0500

Hoping maybe someone here can chime in with an easy solution.

I am able to setup a call just fine in my Android app using the liblinphone 
library (v4.0.1) on my Android device. SIP registration and INVITEs work just 
fine; so, the SIP signaling portion works 100%. However, the RTP StreamsRunning 
state is delayed when I have a DNS server set on my Android device, even if 
that DNS server has no upstream Internet connection.

If no DNS server is set in the Android settings, SIP and RTP work just fine 
(voices are heard immediately after a call is answered). If I set a DNS server 
in the Android settings (just a local server with local address mappings), the 
RTP StreamsRunning state is delayed by exactly 40 seconds on every call. After 
that 40 second delay, the RTP streams start running and voices can be heard on 
both ends of the call. So, this does not appear to be a network/NAT issue — 
everything works as expected after a 40-second timeout. After running 
Wireshark/tcpdump, I can see RTP packets being sent from my PABX server back to 
the Linphone client (which Linphone confirms in its report at the end of the 
call), but there are no outgoing packets from the Linphone client to Asterisk 
for 40 seconds. And, there is no incoming call audio played from the Linphone 
client, despite the RTP packets being sent from the PABX server.

I believe the problem is related to the DNS server being set on my device. I 
see Linphone making requests for AAAA records for my SIP server, which is an IP 
address. So, the AAAA requests the IPv6 address for an IPv4 address 
(172.16.1.xxx).  I have tried overriding the DNS servers list in 
LinphoneCore.setDnsServers(), but this does not seem to actually override the 
DNS server list. I tried just setting the list to ”0.0.0.0” to disable DNS 
lookups altogether. I have also tried placing dns_search_enabled=0 and 
dns_srv_enabled=0 into my linphonerc file; but, neither of these has any 
effect. The documentation is unclear, but I think these do not disable DNS 
lookups but rather just determine options for the DNS in use. Ideally, I do not 
want or need to use DNS whatsoever for Linphone in my app. I have also 
explicitly turned off IPv6 support (which is the default anyways).

Is there any option available in the API or from .linphonerc to turn off DNS 
lookups within liblinphone? I did not see one in the code that reads the config 
file in GitHub. Barring that, is there a way to figure out what *exactly* is 
being looked up and timing out at the 40-second mark? Maybe I could add that 
into my local DNS server. I don’t see anything other than the IPv4 address 
being looked up via DNS.

Any help would be appreciated.

Thanks,

Neil


reply via email to

[Prev in Thread] Current Thread [Next in Thread]