[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Linphone-developers] RTP streams running delayed with DNS set,
Neil Sharp <=