gethostbyname() errors with pjsua2/pjsip on multihomed system

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

 



For anyone else that runs into the same issue, I was finally able to trace
down the problem.

For whatever reason the one particular system that was having this problem
needed to have AccountMediaConfig's ipv6Use set to 0 (disabled) in order
for the correct address family to be selected (this system wasn't using
ipv6 anyway, so this was not an issue).

Additionally we also had to set AccountMediaConfig's srtpUse
and srtpSecureSignaling both to 0 to disable them since our media source
was not using srtp.

After those changes everything worked perfectly.


- Brian


On Thu, Mar 19, 2015 at 11:10 AM, Brian White <mscdex at mscdex.net> wrote:

> I forgot to mention that I'm using pjsua2 as a SIP trunk that accepts
> incoming calls and there is no registration.
>
>
> On Wed, Mar 18, 2015 at 3:39 PM, Brian White <mscdex at mscdex.net> wrote:
>
>> This is the first time I've used pjsip/pjsua2 on a multihomed system but
>> I noticed that when setting an AccountConfig's
>> `mediaConfig.transportConfig.publicAddress` and/or
>> `mediaConfig.transportConfig.boundAddress` to the IP address of the correct
>> network interface (on Linux), I see errors when the call media comes in:
>>
>> ERROR: Unable to resolve transport bind address: gethostbyname() has
>> returned error (PJ_ERESOLVE) [status=70018]
>> ERROR: Unable to create RTP/RTCP socket: gethostbyname() has returned
>> error (PJ_ERESOLVE) [status=70018]
>> ERROR: Error creating media transport: gethostbyname() has returned error
>> (PJ_ERESOLVE)
>> ERROR: Error initializing media channel: gethostbyname() has returned
>> error (PJ_ERESOLVE) [status=70018]
>> ERROR: pjsua_call_answer2(id, param.p_opt, prm.statusCode,
>> param.p_reason, param.p_msg_data) error: gethostbyname() has returned error
>> (PJ_ERESOLVE) (status=70018) [../src/pjsua2/call.cpp:490]
>>
>> If I don't set those values, the call "works" but no RTP packets are
>> received because it's listening on the wrong network interface (I verified
>> this by checking the address used in the SDP sent by pjsip).
>>
>> Setting the TransportConfig's `publicAddress` and `boundAddress` of the
>> Transport to the *same IP address* works just fine and is bound correctly.
>> I verified that by looking at the pjsip debug output.
>>
>> I have even tried adding a hostname to /etc/hosts that points to the IP
>> address, and once again that works for the signalling address but not the
>> media address.
>>
>> Making the same call to `gethostbyname()` from say a Python script works
>> just fine, whether I pass the same network interface IP or the "fake"
>> hostname, so I'm not sure why pjsip is having such a problem.
>>
>> I'm not using ICE/STUN/TURN/etc. because it's not a NAT issue, these
>> calls are all happening on the same local network. pjsua2 works just fine
>> on our systems with only one network interface.
>>
>> It would be nice if pjsip showed the resulting `herror()` when
>> `gethostbyname()` returns NULL. I tried adding this and other debug
>> messages myself but for some reason I never see my printf()s in the console
>> after recompiling and reinstalling from source.
>>
>> If anyone has any suggestions or ideas, I would appreciate it as I am
>> really at a dead end here.
>>
>> Thanks
>>
>> - Brian
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20150326/4d8318e7/attachment.html>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux