Two instances running side by side

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

 



Hi,

Is it possible to have two pjsip instances running simultaneously in the 
same app?
I want to have two "SIP engines" running side by side (don't ask why :p)

After SIPEngine_1 is initialized and running fine,  I try to launch 
SIPEngine_2 but the problems start when I try to  Init the transaction 
layer...

This is what I try to run when start SIP Engine 2

------------------------------------------------------------------------------

    pj_status_t status;
 
     /* Must init PJLIB first: */
//     status = pj_init();
//  pj_assert(status == PJ_SUCCESS);
 
 
     /* Then init PJLIB-UTIL: */
//    status = pjlib_util_init();
//  pj_assert(status == PJ_SUCCESS);
 
 
    pj_thread_desc desc;
    pj_thread_t *this_thread;

    status = pj_thread_register("Thread FaxSipEngine", desc, &this_thread);
    if (status != PJ_SUCCESS) {
           Logger::instance->Debug("FAXSIPENGINE | Unable to register 
pj_thread");
        return;
    }

     /* Must create a pool factory before we can allocate any memory. */
     pj_caching_pool_init(&cp, &pj_pool_factory_default_policy, 0);
 

     /* Create global endpoint: */
     {
         const pj_str_t *hostname;
         const char *endpt_name;
 
         /* Endpoint MUST be assigned a globally unique name.
          * The name will be used as the hostname in Warning header.
          */
 
         /* For this implementation, we'll use hostname for simplicity */
         hostname = pj_gethostname();
         endpt_name = hostname->ptr;
 
         /* Create the endpoint: */
 
         status = pjsip_endpt_create(&cp.factory, endpt_name,
                                     &g_endpt);
         pj_assert(status == PJ_SUCCESS);
     }
 
 
     /*
      * Add UDP transport, with hard-coded port
      * Alternatively, application can use pjsip_udp_transport_attach() to
      * start UDP transport, if it already has an UDP socket (e.g. after it
      * resolves the address with STUN).
      */
     {
         pj_sockaddr_in addr;
 
        status = !PJ_SUCCESS;

        while(status != PJ_SUCCESS){
            addr.sin_family = pj_AF_INET();
            addr.sin_addr.s_addr = 0;
            addr.sin_port = pj_htons((pj_uint16_t)mySipPort);
            status = pjsip_udp_transport_start( g_endpt, &addr, NULL, 1, 
NULL);
            if(status != PJ_SUCCESS)
                Fax::instance->mySipPort++;
         }
         
         if (status != PJ_SUCCESS) {
            ;//app_perror(THIS_FILE, "Unable to start UDP transport", 
status);
             return;
         }
     }


------------------------------------------------------------------------------
PROBLEMS START HERE, I get an assertion error inside 
pjsip_tsx_layer_init_module(g_endpt);
------------------------------------------------------------------------------
     /*
      * Init transaction layer.
      * This will create/initialize transaction hash tables etc.
      */
     status = pjsip_tsx_layer_init_module(g_endpt);
     pj_assert(status == PJ_SUCCESS);
 
 
     /*
      * Initialize UA layer module.
      * This will create/initialize dialog hash tables etc.
      */
    status = pjsip_ua_init_module( g_endpt, NULL );
    pj_assert(status == PJ_SUCCESS);


[...]

------------------------------------------------------------------------------


Any help will be appreciated ;)

Andr?



[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