Ignore:
Timestamp:
Aug 5, 2009 6:41:23 PM (10 years ago)
Author:
nanang
Message:

Ticket #930:

  • Updated semantic of contact param in functions pjsip_dlg_create_uac(), pjsip_dlg_create_uas(), pjsip_endpt_create_request() and also variable pjsua_acc.contact to be Contact header value (was Contact URI).
  • Updated docs related to above modifications.
  • Fixed pjsua_im_send() in generating contact header, it should use pjsua_acc.contact instead, if it is set.
File:
1 edited

Legend:

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

    r2651 r2855  
    510510    pjsip_media_type media_type; 
    511511    pjsua_im_data *im_data; 
     512    pjsua_acc *acc; 
    512513    pj_str_t contact; 
    513514    pj_status_t status; 
     
    515516    /* To and message body must be specified. */ 
    516517    PJ_ASSERT_RETURN(to && content, PJ_EINVAL); 
     518 
     519    acc = &pjsua_var.acc[acc_id]; 
    517520 
    518521    /* Create request. */ 
    519522    status = pjsip_endpt_create_request(pjsua_var.endpt,  
    520523                                        &pjsip_message_method, to,  
    521                                         &pjsua_var.acc[acc_id].cfg.id, 
     524                                        &acc->cfg.id, 
    522525                                        to, NULL, NULL, -1, NULL, &tdata); 
    523526    if (status != PJ_SUCCESS) { 
     
    529532     * the request. 
    530533     */ 
    531     if (pjsua_var.acc[acc_id].cfg.transport_id != PJSUA_INVALID_ID) { 
     534    if (acc->cfg.transport_id != PJSUA_INVALID_ID) { 
    532535        pjsip_tpselector tp_sel; 
    533536 
    534         pjsua_init_tpselector(pjsua_var.acc[acc_id].cfg.transport_id, &tp_sel); 
     537        pjsua_init_tpselector(acc->cfg.transport_id, &tp_sel); 
    535538        pjsip_tx_data_set_transport(tdata, &tp_sel); 
    536539    } 
     
    540543                       (pjsip_hdr*)pjsua_im_create_accept(tdata->pool)); 
    541544 
    542     /* Add contact. */ 
    543     status = pjsua_acc_create_uac_contact(tdata->pool, &contact, acc_id, to); 
    544     if (status != PJ_SUCCESS) { 
    545         pjsua_perror(THIS_FILE, "Unable to generate Contact header", status); 
    546         pjsip_tx_data_dec_ref(tdata); 
    547         return status; 
     545    /* Create suitable Contact header unless a Contact header has been 
     546     * set in the account. 
     547     */ 
     548    if (acc->contact.slen) { 
     549        contact = acc->contact; 
     550    } else { 
     551        status = pjsua_acc_create_uac_contact(tdata->pool, &contact, acc_id, to); 
     552        if (status != PJ_SUCCESS) { 
     553            pjsua_perror(THIS_FILE, "Unable to generate Contact header", status); 
     554            pjsip_tx_data_dec_ref(tdata); 
     555            return status; 
     556        } 
    548557    } 
    549558 
     
    585594 
    586595    /* Add route set */ 
    587     pjsua_set_msg_route_set(tdata, &pjsua_var.acc[acc_id].route_set); 
     596    pjsua_set_msg_route_set(tdata, &acc->route_set); 
    588597 
    589598    /* Send request (statefully) */ 
     
    610619    pjsua_im_data *im_data; 
    611620    pjsip_tx_data *tdata; 
     621    pjsua_acc *acc; 
    612622    pj_str_t contact; 
    613623    pj_status_t status; 
    614624 
     625    acc = &pjsua_var.acc[acc_id]; 
     626 
    615627    /* Create request. */ 
    616628    status = pjsip_endpt_create_request( pjsua_var.endpt, &pjsip_message_method, 
    617                                          to, &pjsua_var.acc[acc_id].cfg.id, 
     629                                         to, &acc->cfg.id, 
    618630                                         to, NULL, NULL, -1, NULL, &tdata); 
    619631    if (status != PJ_SUCCESS) { 
     
    626638     * the request. 
    627639     */ 
    628     if (pjsua_var.acc[acc_id].cfg.transport_id != PJSUA_INVALID_ID) { 
     640    if (acc->cfg.transport_id != PJSUA_INVALID_ID) { 
    629641        pjsip_tpselector tp_sel; 
    630642 
    631         pjsua_init_tpselector(pjsua_var.acc[acc_id].cfg.transport_id, &tp_sel); 
     643        pjsua_init_tpselector(acc->cfg.transport_id, &tp_sel); 
    632644        pjsip_tx_data_set_transport(tdata, &tp_sel); 
    633645    } 
     
    638650 
    639651 
    640     /* Add contact. */ 
    641     status = pjsua_acc_create_uac_contact(tdata->pool, &contact, acc_id, to); 
    642     if (status != PJ_SUCCESS) { 
    643         pjsua_perror(THIS_FILE, "Unable to generate Contact header", status); 
    644         pjsip_tx_data_dec_ref(tdata); 
    645         return status; 
     652    /* Create suitable Contact header unless a Contact header has been 
     653     * set in the account. 
     654     */ 
     655    if (acc->contact.slen) { 
     656        contact = acc->contact; 
     657    } else { 
     658        status = pjsua_acc_create_uac_contact(tdata->pool, &contact, acc_id, to); 
     659        if (status != PJ_SUCCESS) { 
     660            pjsua_perror(THIS_FILE, "Unable to generate Contact header", status); 
     661            pjsip_tx_data_dec_ref(tdata); 
     662            return status; 
     663        } 
    646664    } 
    647665 
     
    659677 
    660678    /* Add route set */ 
    661     pjsua_set_msg_route_set(tdata, &pjsua_var.acc[acc_id].route_set); 
     679    pjsua_set_msg_route_set(tdata, &acc->route_set); 
    662680 
    663681    /* Create data to reauthenticate */ 
Note: See TracChangeset for help on using the changeset viewer.