summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2010-09-28 10:48:48 +0000
committerNanang Izzuddin <nanang@teluu.com>2010-09-28 10:48:48 +0000
commit513fb792c867d3791fbd258151ab32c66c6c6249 (patch)
tree82fdaa6ac24901b5d2b695a6c05fd254a094d7ff
parent042fb984d0a90fb0ab119f95ae8b275fb588a474 (diff)
Close #1137: added field reg_hdr_list into pjsua_acc_config to specify custom headers for REGISTER requests of the account.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3326 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h6
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c14
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c1
3 files changed, 21 insertions, 0 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index 10e1b0fe..dc013c0e 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -2078,6 +2078,12 @@ typedef struct pjsua_acc_config
*/
pj_str_t reg_uri;
+ /**
+ * The optional custom SIP headers to be put in the registration
+ * request.
+ */
+ pjsip_hdr reg_hdr_list;
+
/**
* Subscribe to message waiting indication events (RFC 3842).
*
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index fdd37a51..027b88de 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -91,6 +91,17 @@ PJ_DEF(void) pjsua_acc_config_dup( pj_pool_t *pool,
pjsip_cred_dup(pool, &dst->cred_info[i], &src->cred_info[i]);
}
+ pj_list_init(&dst->reg_hdr_list);
+ if (!pj_list_empty(&src->reg_hdr_list)) {
+ const pjsip_hdr *hdr;
+
+ hdr = src->reg_hdr_list.next;
+ while (hdr != &src->reg_hdr_list) {
+ pj_list_push_back(&dst->reg_hdr_list, pjsip_hdr_clone(pool, hdr));
+ hdr = hdr->next;
+ }
+ }
+
dst->ka_interval = src->ka_interval;
pj_strdup(pool, &dst->ka_data, &src->ka_data);
}
@@ -1657,6 +1668,9 @@ static pj_status_t pjsua_regc_init(int acc_id)
pjsip_regc_set_route_set( acc->regc, &route_set );
}
+ /* Add custom request headers specified in the account config */
+ pjsip_regc_add_headers(acc->regc, &acc->cfg.reg_hdr_list);
+
/* Add other request headers. */
if (pjsua_var.ua_cfg.user_agent.slen) {
pjsip_hdr hdr_list;
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index 0dcd0f2a..4adc191b 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -188,6 +188,7 @@ PJ_DEF(void) pjsua_acc_config_default(pjsua_acc_config *cfg)
#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0
cfg->use_stream_ka = (PJMEDIA_STREAM_ENABLE_KA != 0);
#endif
+ pj_list_init(&cfg->reg_hdr_list);
}
PJ_DEF(void) pjsua_buddy_config_default(pjsua_buddy_config *cfg)