Ignore:
Timestamp:
Dec 28, 2016 3:40:07 AM (8 years ago)
Author:
nanang
Message:

Re #1900: More merged from trunk (r5512 mistakenly contains merged changes in third-party dir only).

Location:
pjproject/branches/projects/uwp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/uwp

  • pjproject/branches/projects/uwp/pjsip/src/pjsip-ua/sip_reg.c

    r4989 r5513  
    190190        pj_lock_destroy(regc->lock); 
    191191        regc->lock = NULL; 
     192 
     193        pjsip_auth_clt_deinit(&regc->auth_sess); 
    192194        pjsip_endpt_release_pool(regc->endpt, regc->pool); 
    193195    } 
     
    514516        while (route != &regc->route_set) { 
    515517            pjsip_hdr *new_hdr = (pjsip_hdr*) 
    516                                  pjsip_hdr_shallow_clone(tdata->pool, route); 
     518                                 pjsip_hdr_clone(tdata->pool, route); 
    517519            pj_list_insert_after(route_pos, new_hdr); 
    518520            route_pos = new_hdr; 
     
    528530        while (hdr != &regc->hdr_list) { 
    529531            pjsip_hdr *new_hdr = (pjsip_hdr*) 
    530                                  pjsip_hdr_shallow_clone(tdata->pool, hdr); 
     532                                 pjsip_hdr_clone(tdata->pool, hdr); 
    531533            pjsip_msg_add_hdr(tdata->msg, new_hdr); 
    532534            hdr = hdr->next; 
     
    567569    while (hdr != &regc->contact_hdr_list) { 
    568570        pjsip_msg_add_hdr(msg, (pjsip_hdr*) 
    569                                pjsip_hdr_shallow_clone(tdata->pool, hdr)); 
     571                               pjsip_hdr_clone(tdata->pool, hdr)); 
    570572        hdr = hdr->next; 
    571573    } 
     
    582584    if (regc->expires_hdr) 
    583585        pjsip_msg_add_hdr(msg, (pjsip_hdr*) 
    584                                pjsip_hdr_shallow_clone(tdata->pool, 
    585                                                        regc->expires_hdr)); 
     586                               pjsip_hdr_clone(tdata->pool, 
     587                                               regc->expires_hdr)); 
    586588 
    587589    if (regc->timer.id != 0) { 
     
    594596    if (h_allow) { 
    595597        pjsip_msg_add_hdr(msg, (pjsip_hdr*) 
    596                                pjsip_hdr_shallow_clone(tdata->pool, h_allow)); 
     598                               pjsip_hdr_clone(tdata->pool, h_allow)); 
    597599 
    598600    } 
     
    639641    while ((void*)hdr != (void*)&regc->contact_hdr_list) { 
    640642        pjsip_msg_add_hdr(msg, (pjsip_hdr*) 
    641                                pjsip_hdr_shallow_clone(tdata->pool, hdr)); 
     643                               pjsip_hdr_clone(tdata->pool, hdr)); 
    642644        hdr = hdr->next; 
    643645    } 
     
    739741                          const pj_str_t *reason, 
    740742                          pjsip_rx_data *rdata, pj_int32_t expiration, 
    741                           int contact_cnt, pjsip_contact_hdr *contact[]) 
     743                          int contact_cnt, pjsip_contact_hdr *contact[], 
     744                          pj_bool_t is_unreg) 
    742745{ 
    743746    cbparam->regc = regc; 
     
    750753    cbparam->expiration = (expiration >= 0? expiration: 
    751754                           regc->expires_requested); 
     755    cbparam->is_unreg = is_unreg; 
    752756    if (contact_cnt) { 
    753757        pj_memcpy( cbparam->contact, contact,  
     
    759763                          const pj_str_t *reason, 
    760764                          pjsip_rx_data *rdata, pj_int32_t expiration, 
    761                           int contact_cnt, pjsip_contact_hdr *contact[]) 
     765                          int contact_cnt, pjsip_contact_hdr *contact[], 
     766                          pj_bool_t is_unreg) 
    762767{ 
    763768    struct pjsip_regc_cbparam cbparam; 
     
    767772 
    768773    cbparam_init(&cbparam, regc, status, st_code, reason, rdata, expiration, 
    769                  contact_cnt, contact); 
     774                 contact_cnt, contact, is_unreg); 
    770775    (*regc->cb)(&cbparam); 
    771776} 
     
    794799        char errmsg[PJ_ERR_MSG_SIZE]; 
    795800        pj_str_t reason = pj_strerror(status, errmsg, sizeof(errmsg)); 
    796         call_callback(regc, status, 400, &reason, NULL, -1, 0, NULL); 
     801        call_callback(regc, status, 400, &reason, NULL, -1, 0, NULL, 
     802                      PJ_FALSE); 
    797803    } 
    798804 
     
    10921098                     (event->body.tsx_state.type==PJSIP_EVENT_RX_MSG) ?  
    10931099                      event->body.tsx_state.src.rdata : NULL, 
    1094                      -1, 0, NULL); 
     1100                     -1, 0, NULL, PJ_FALSE); 
    10951101 
    10961102        /* Call regc tsx callback before handling any response */ 
     
    11311137        pjsip_rx_data *rdata = event->body.tsx_state.src.rdata; 
    11321138        pjsip_tx_data *tdata; 
     1139        pj_bool_t is_unreg; 
    11331140 
    11341141        /* reset current op */ 
     1142        is_unreg = (regc->current_op == REGC_UNREGISTERING); 
    11351143        regc->current_op = REGC_IDLE; 
    11361144 
     
    11641172            while (chdr != &regc->contact_hdr_list) { 
    11651173                pj_list_insert_before(ins_hdr, (pjsip_hdr*) 
    1166                     pjsip_hdr_shallow_clone(tsx->last_tx->pool, chdr)); 
     1174                    pjsip_hdr_clone(tsx->last_tx->pool, chdr)); 
    11671175                chdr = chdr->next; 
    11681176            } 
     
    11981206                call_callback(regc, status, tsx->status_code,  
    11991207                              &rdata->msg_info.msg->line.status.reason, 
    1200                               rdata, -1, 0, NULL); 
     1208                              rdata, -1, 0, NULL, is_unreg); 
    12011209                pj_lock_acquire(regc->lock); 
    12021210            } 
     
    12871295                call_callback(regc, status, tsx->status_code, 
    12881296                              &rdata->msg_info.msg->line.status.reason, 
    1289                               rdata, -1, 0, NULL); 
     1297                              rdata, -1, 0, NULL, PJ_FALSE); 
    12901298                pj_lock_acquire(regc->lock); 
    12911299            } 
     
    13021310        unsigned contact_cnt = 0; 
    13031311        pjsip_contact_hdr *contact[PJSIP_REGC_MAX_CONTACT]; 
     1312        pj_bool_t is_unreg; 
    13041313 
    13051314        if (tsx->status_code/100 == 2) { 
     
    13261335 
    13271336        /* Mark operation as complete */ 
     1337        is_unreg = (regc->current_op == REGC_UNREGISTERING); 
    13281338        regc->current_op = REGC_IDLE; 
    13291339 
     
    13371347                        : &tsx->status_text), 
    13381348                      rdata, expiration,  
    1339                       contact_cnt, contact); 
     1349                      contact_cnt, contact, is_unreg); 
    13401350        pj_lock_acquire(regc->lock); 
    13411351    } 
     
    14251435                                      regc, &regc_tsx_callback); 
    14261436    if (status!=PJ_SUCCESS) { 
     1437        /* On failure, regc_tsx_callback() may not be called, so we need 
     1438         * to reset regc->has_tsx here (see also ticket #1936). 
     1439         */ 
     1440        regc->has_tsx = PJ_FALSE; 
     1441 
    14271442        PJ_LOG(4,(THIS_FILE, "Error sending request, status=%d", status)); 
    14281443    } 
Note: See TracChangeset for help on using the changeset viewer.