Ignore:
Timestamp:
Jul 13, 2008 12:24:55 PM (16 years ago)
Author:
bennylp
Message:

Ticket #518: some fixes for growing memory usage in PJSUA-LIB, by using temporary pools for temporary variables and by having separate pool for each account and buddy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c

    r2079 r2130  
    331331                                          pjsua_call_id *p_call_id) 
    332332{ 
     333    pj_pool_t *tmp_pool; 
    333334    pjsip_dialog *dlg = NULL; 
    334335    pjmedia_sdp_session *offer; 
     
    383384    call = &pjsua_var.calls[call_id]; 
    384385 
     386    /* Create temporary pool */ 
     387    tmp_pool = pjsua_pool_create("tmpcall10", 512, 256); 
     388 
    385389    /* Verify that destination URI is valid before calling  
    386390     * pjsua_acc_create_uac_contact, or otherwise there   
     
    389393     */ 
    390394    if (1) { 
    391         pj_pool_t *pool; 
    392395        pjsip_uri *uri; 
    393396        pj_str_t dup; 
    394397 
    395         pool = pjsua_pool_create("tmp-uri", 4000, 4000); 
    396         if (!pool) { 
    397             pjsua_perror(THIS_FILE, "Unable to create pool", PJ_ENOMEM); 
    398             PJSUA_UNLOCK(); 
    399             return PJ_ENOMEM; 
    400         } 
    401          
    402         pj_strdup_with_null(pool, &dup, dest_uri); 
    403         uri = pjsip_parse_uri(pool, dup.ptr, dup.slen, 0); 
    404         pj_pool_release(pool); 
     398        pj_strdup_with_null(tmp_pool, &dup, dest_uri); 
     399        uri = pjsip_parse_uri(tmp_pool, dup.ptr, dup.slen, 0); 
    405400 
    406401        if (uri == NULL) { 
    407402            pjsua_perror(THIS_FILE, "Unable to make call",  
    408403                         PJSIP_EINVALIDREQURI); 
     404            pj_pool_release(tmp_pool); 
    409405            PJSUA_UNLOCK(); 
    410406            return PJSIP_EINVALIDREQURI; 
     
    427423        contact = acc->contact; 
    428424    } else { 
    429         status = pjsua_acc_create_uac_contact(pjsua_var.pool, &contact, 
     425        status = pjsua_acc_create_uac_contact(tmp_pool, &contact, 
    430426                                              acc_id, dest_uri); 
    431427        if (status != PJ_SUCCESS) { 
    432428            pjsua_perror(THIS_FILE, "Unable to generate Contact header",  
    433429                         status); 
     430            pj_pool_release(tmp_pool); 
    434431            PJSUA_UNLOCK(); 
    435432            return status; 
     
    443440    if (status != PJ_SUCCESS) { 
    444441        pjsua_perror(THIS_FILE, "Dialog creation failed", status); 
     442        pj_pool_release(tmp_pool); 
    445443        PJSUA_UNLOCK(); 
    446444        return status; 
     
    550548        *p_call_id = call_id; 
    551549 
     550    pj_pool_release(tmp_pool); 
    552551    PJSUA_UNLOCK(); 
    553552 
     
    567566    } 
    568567 
     568    pj_pool_release(tmp_pool); 
    569569    PJSUA_UNLOCK(); 
    570570    return status; 
     
    26182618{ 
    26192619    pj_status_t status; 
     2620    pj_pool_t *pool; 
    26202621    pjmedia_sdp_conn *conn; 
    26212622    pjmedia_sdp_attr *attr; 
     
    26232624    pjmedia_sdp_session *sdp; 
    26242625 
     2626    /* Use call's pool */ 
     2627    pool = call->inv->pool; 
     2628 
    26252629    /* Get media socket info */ 
    26262630    pjmedia_transport_info_init(&tp_info); 
     
    26282632 
    26292633    /* Create new offer */ 
    2630     status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, pjsua_var.pool, 1, 
     2634    status = pjmedia_endpt_create_sdp(pjsua_var.med_endpt, pool, 1, 
    26312635                                      &tp_info.sock_info, &sdp); 
    26322636    if (status != PJ_SUCCESS) { 
     
    26502654 
    26512655    /* Add inactive attribute */ 
    2652     attr = pjmedia_sdp_attr_create(pjsua_var.pool, "inactive", NULL); 
     2656    attr = pjmedia_sdp_attr_create(pool, "inactive", NULL); 
    26532657    pjmedia_sdp_media_add_attr(sdp->media[0], attr); 
    26542658 
Note: See TracChangeset for help on using the changeset viewer.