Infite loop(?) when calling pjsua_call_make_call() after receiving 480 Temporary Unavailable

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

 



Hi,

I've got some more info, and it looks like I've found the code that
caused these issues. Still don't know why this is happening though, and
would really appreciate some help with this!

> As the subject says, it looks like as if PJSUA-LIB enters an infite loop
> when calling pjsua_call_make_call() after receiving a 480 Temporary
> Unavailable response from the carrier. CPU usage is 100% in this case.
> When I send a CANCEL before the carrier has a chance to return the 480,
> everything is allright.

This turned out not to be true, the problem (often) occurs after sending
a CANCEL as well.

I wanted the application to bind to different (customizable) IPs and
ports, so I've modified UDP transport config when calling
pjsua_transport_create():

  // UDP transport
  {
    pjsua_transport_config_default(&udpTransportConfig);
    udpTransportConfig.port = 5060; // from config
    udpTransportConfig.public_addr = pj_str("10.10.10.70"); // from config
    udpTransportConfig.bound_addr = pj_str("10.10.10.70"); // from config

    pj_status_t status = pjsua_transport_create(PJSIP_TRANSPORT_UDP,
&udpTransportConfig, NULL);

    if (status != PJ_SUCCESS) {
      return; // error
    }
  }

This works as expected, but the RTP IP and ports were still the
defaults, so I've also added the following code to the initialization (a
bit simplified):

  // RTP transport (breaks things)
  {
    pjsua_transport_config_default(&rtpTransportConfig);

    rtpTransportConfig.port = 4000; // from config
    rtpTransportConfig.public_addr = pj_str("10.10.10.70"); // from config
    rtpTransportConfig.bound_addr = pj_str("10.10.10.70"); // from config

    pj_status_t status = pjsua_media_transports_create(&rtpTransportConfig);

    if (status != PJ_SUCCESS) {
      return; // error
    }
  }

This works as expected for successful calls, but seems also the root of
my problems. If I remove this, everything works OK, but I lose the
ability to change the IPs and ports.

What am I doing wrong? Is this the right way to customize the RTP transport?

Why does the above even seem to work? I'm just creating a transport
using pjsua_media_transports_create(), but not doing anything with it.
Shouldn't I remove the existing RTP transport? OTOH, this is how the
PJSUA demo app seems to do it...

Regards,

Maarten

P.S. I forgot the mention last time, but I'm using PJSIP 1.0.2.

-- 
Privateer Software Development (www.privateer-software.nl)
* web usability, web accessibility, web development
* cross-platform software development



[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