Ignore:
Timestamp:
Nov 11, 2006 9:25:55 PM (18 years ago)
Author:
bennylp
Message:

Add pjsip_regc_add_headers() APi to set headers to be added
to the REGISTER request. This solves the problem where headers

registered in the initial REGISTER request (such as User-Agent
header) are not sent in subsequent reregistration request.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsip-ua/sip_reg.c

    r776 r799  
    6666    pj_uint32_t                  expires; 
    6767    pjsip_route_hdr              route_set; 
     68    pjsip_hdr                    hdr_list; 
    6869 
    6970    /* Authorization sessions. */ 
     
    107108 
    108109    pj_list_init(&regc->route_set); 
     110    pj_list_init(&regc->hdr_list); 
    109111 
    110112    /* Done */ 
     
    308310} 
    309311 
     312PJ_DEF(pj_status_t) pjsip_regc_add_headers( pjsip_regc *regc, 
     313                                            const pjsip_hdr *hdr_list) 
     314{ 
     315    const pjsip_hdr *hdr; 
     316 
     317    PJ_ASSERT_RETURN(regc && hdr_list, PJ_EINVAL); 
     318 
     319    //This is "add" operation, so don't remove headers. 
     320    //pj_list_init(&regc->hdr_list); 
     321 
     322    hdr = hdr_list->next; 
     323    while (hdr != hdr_list) { 
     324        pj_list_push_back(&regc->hdr_list, pjsip_hdr_clone(regc->pool, hdr)); 
     325        hdr = hdr->next; 
     326    } 
     327 
     328    return PJ_SUCCESS; 
     329} 
     330 
    310331static pj_status_t create_request(pjsip_regc *regc,  
    311332                                  pjsip_tx_data **p_tdata) 
     
    348369            route_pos = new_hdr; 
    349370            route = route->next; 
     371        } 
     372    } 
     373 
     374    /* Add additional request headers */ 
     375    if (!pj_list_empty(&regc->hdr_list)) { 
     376        const pjsip_hdr *hdr; 
     377 
     378        hdr = regc->hdr_list.next; 
     379        while (hdr != &regc->hdr_list) { 
     380            pjsip_hdr *new_hdr = pjsip_hdr_shallow_clone(tdata->pool, hdr); 
     381            pjsip_msg_add_hdr(tdata->msg, new_hdr); 
     382            hdr = hdr->next; 
    350383        } 
    351384    } 
Note: See TracChangeset for help on using the changeset viewer.