summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_pres.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-07-18 00:33:02 +0000
committerBenny Prijono <bennylp@teluu.com>2006-07-18 00:33:02 +0000
commit65035358b4b7f51b4183a0937e9e93ff130d7525 (patch)
treed38d458e390fd2ac04e91f90bac5b856f4089c4c /pjsip/src/pjsua-lib/pjsua_pres.c
parentcbb6c140cf6e47e65b31b93009cfe39916933009 (diff)
More intelligent PJSUA-LIB in selecting the appropriate address for Contact header
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@611 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_pres.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_pres.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c
index 4af2b6e0..cba0724c 100644
--- a/pjsip/src/pjsua-lib/pjsua_pres.c
+++ b/pjsip/src/pjsua-lib/pjsua_pres.c
@@ -440,6 +440,7 @@ static pj_bool_t pres_on_rx_request(pjsip_rx_data *rdata)
{
int acc_id;
pjsua_acc *acc;
+ pj_str_t contact;
pjsip_method *req_method = &rdata->msg_info.msg->line.req.method;
pjsua_srv_pres *uapres;
pjsip_evsub *sub;
@@ -463,10 +464,18 @@ static pj_bool_t pres_on_rx_request(pjsip_rx_data *rdata)
PJ_LOG(4,(THIS_FILE, "Creating server subscription, using account %d",
acc_id));
+ /* Create suitable Contact header */
+ status = pjsua_acc_create_uas_contact(rdata->tp_info.pool, &contact,
+ acc_id, rdata);
+ if (status != PJ_SUCCESS) {
+ pjsua_perror(THIS_FILE, "Unable to generate Contact header", status);
+ PJSUA_UNLOCK();
+ return PJ_TRUE;
+ }
+
/* Create UAS dialog: */
status = pjsip_dlg_create_uas(pjsip_ua_instance(), rdata,
- &acc->real_contact,
- &dlg);
+ &contact, &dlg);
if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE,
"Unable to create UAS dialog for subscription",
@@ -761,6 +770,7 @@ static void subscribe_buddy_presence(unsigned index)
pjsua_buddy *buddy;
int acc_id;
pjsua_acc *acc;
+ pj_str_t contact;
pjsip_dialog *dlg;
pjsip_tx_data *tdata;
pj_status_t status;
@@ -773,10 +783,18 @@ static void subscribe_buddy_presence(unsigned index)
PJ_LOG(4,(THIS_FILE, "Using account %d for buddy %d subscription",
acc_id, index));
+ /* Generate suitable Contact header */
+ status = pjsua_acc_create_uac_contact(pjsua_var.pool, &contact,
+ acc_id, &buddy->uri);
+ if (status != PJ_SUCCESS) {
+ pjsua_perror(THIS_FILE, "Unable to generate Contact header", status);
+ return;
+ }
+
/* Create UAC dialog */
status = pjsip_dlg_create_uac( pjsip_ua_instance(),
&acc->cfg.id,
- &acc->real_contact,
+ &contact,
&buddy->uri,
NULL, &dlg);
if (status != PJ_SUCCESS) {